oracle timestamp 设置默认值,oracle的timestamp类型使用 毫秒
我们都知道date和timestamp都是对日期和时间的表示,只是两种类型的精确度不同,前者精确到秒,后者精确到小数秒(fractional_seconds_precision),可以是
0 to 9,缺省是6。
但是对date类型的运算很简单,有很多函数可用来处理;而两个timestamp的差则是很直观地显示为多少天+多少小时+多少分钟+多少秒+多少小数秒,
SQL> create table test (T1 TIMESTAMP(6),
2 T2 TIMESTAMP(6));
表已创建。
SQL> insert into test values(
2 to_timestamp('2006-01-01 12:10:10.1','yyyy-mm-dd
hh24:mi:ss.ff'),
3 to_timestamp('2006-01-01 12:20:10.2','yyyy-mm-dd
hh24:mi:ss.ff'));
已创建 1 行。
SQL>
SQL> insert into test values(
2 to_timestamp('2006-01-01 12:10:10.1','yyyy-mm-dd
hh24:mi:ss.ff'),
3 to_timestamp('2006-01-02 12:20:10.2','yyyy-mm-dd
hh24:mi:ss.ff'));
已创建 1 行。
SQL>
SQL> insert into test values(
2 to_timestamp('2006-01-01 12:10:10.1','yyyy-mm-dd
hh24:mi:ss.ff'),
3 to_timestamp('2006-01-02 13:40:20.2','yyyy-mm-dd
hh24:mi:ss.ff'));
已创建 1 行。
SQL> commit;
提交完成。
SQL>
两个timestamp的差则是很直观地显示为多少天+多少小时+多少分钟+多少秒+多少小数秒:
SQL> select t2-t1 from test;
+000000000 00:10:00.100000
+000000001 00:10:00.100000
+000000001 01:30:10.100000
SQL>
但要简单地转化为某一个精度却比较麻烦,用类似date类型的处理方法是不行的。如转化为分:
SQL> select 1440*(t2-t1) from test;
+000000010 00:02:24.000000000
+000001450 00:02:24.000000000
+000001530 04:02:24.000000000
SQL>
发现结果根本不是原先想要的,而是在原先的“多少天+多少小时+多少分钟+多少秒+多少小数秒”的每一项都乘以1440再进行进制处理。
最容易理解的就是用substr将两个timestamp的差进行分割转化处理:
SQL> SELECT substr((t2-t1),instr((t2-t1),'
')+7,2) seconds,
2 substr((t2-t1),instr((t2-t1),' ')+4,2)
minutes,
3 substr((t2-t1),instr((t2-t1),' ')+1,2) hours,
4 trunc(to_number(substr((t2-t1),1,instr(t2-t1,' '))))
days,
5 trunc(to_number(substr((t2-t1),1,instr(t2-t1,' ')))/7)
weeks
6 FROM test;
SECO MINU HOUR DAYS WEEKS
---- ---- ---- ---------- ----------
00 10 00 0 0
00 10 00 1 0
10 30 01 1 0
或者利用自定义函数来实现将天数转换成“天时分秒”格式:
CREATE OR REPLACE FUNCTION F_DAYS2STR(P_DAYS IN NUMBER
DEFAULT 0)
RETURN VARCHAR2 IS--Ver:1.0--Created by xsb on 2005-05-26--For: 将天数转换成天时分秒格式DAYS NUMBER := NVL(P_DAYS, 0);
VD NUMBER; --天VH NUMBER; --小时VM NUMBER; --分VS NUMBER; --秒RESULT VARCHAR2(100); --返回值BEGIN
VD := TRUNC(DAYS);
VH := TRUNC((DAYS - VD) * 24);
VM := TRUNC((DAYS - VD - VH / 24) * 24 * 60);
VS := TRUNC((DAYS - VD - VH / 24 - VM / 24 / 60) * 24 * 60 * 60);
SELECT DECODE(VD, 0, '', VD
|| '天') || DECODE(VH, 0, '', VH || '小时') ||DECODE(VM, 0, '', VM || '分') || DECODE(VS, 0, '', VS || '秒') INTO RESULT FROM DUAL;
RETURN(RESULT);
END;
SQL>
如果最后结果的精度要求不高时(在分或分以上时),就可以先将timestamp转化为date再结算,这样就简单多了:
SQL> select (to_date(to_char(t2,'yyyy-mm-dd
hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss'
)-to_date(to_char(t1,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd
hh24:mi:ss'))*24*60
2 from test;
10
1450
1530.16667
date转换为timestamp:
SELECT
CAST(sysdate AS
TIMESTAMP) from dual;
二、自己验证的
1、执行SELECT
CAST(sysdate AS
TIMESTAMP) from dual;
2、如的到现在的时间为“24-11月-08
10.57.49.000000 下午”
3、以前的DB2字段中TIMESTAMP(6)时间格式为“2005-11-23
13:13:01.000003”,现转到Oracle10g应为“24-11月-08 10.57.49.000000
下午”
oracle timestamp 设置默认值,oracle的timestamp类型使用 毫秒相关推荐
- mysql timestamp 默认_MySQL数据库TIMESTAMP怎么设置默认值 | 学步园
MySQL数据库TIMESTAMP设置默认值新手技术人员对他感到很陌生,不知道该怎么设置.下面学步园小编来讲解下MySQL数据库TIMESTAMP怎么设置默认值? MySQL数据库TIMESTAMP怎 ...
- jpa mysql timestamp_Java JPA设置默认值、Timestamp设置、自动获取时间
设置默认值 @Column(name="state",columnDefinition="tinyint default 0") private Integer ...
- [vue] prop是怎么做验证的?可以设置默认值吗?
[vue] prop是怎么做验证的?可以设置默认值吗? 单个类型就用Number等基础类型,多个类型用数组,必填的话设置require为true,默认值的话设置default,对象和数组设置默认用工厂 ...
- 【环境配置】MySQL timestamp的默认值设置问题
环境: MacBook Pro 15 jdk8 MySQL:5.7.22 问题: mysql 5.7 以上版本,增加了2条严格的时间格式的限制(NO_ZERO_IN_DATE,NO_ZERO_DATE ...
- MySQL 里 timestamp 的默认值设置
MySQL里timestamp的默认值设置 timestamp 有以下几种默认值设置: 1.timestamp :表示该字段在插入和更新时都不会自动设置为当前时间. 2.timestamp defau ...
- 添加列oracle默认值,Oracle 11g增加列,并带默认值的新特性
在Oracle 11g以前,如果要在一个大表中增加一列,并设置默认值,那将是一个非常悲剧的事情.有些时候不得不选择在线重定义功能来实现 Oracle 11g增加列,并带默认值的新特性 [日期:2014 ...
- ORACLE ---注释,默认值,同义词
ORACLE -注释,默认值,同义词 注释 对表本身或表中的每个字段添加一段解释说明,使得初次接触该表的开发人员能尽快了解该表. 体现: 1.表结构描述中 2.查询结果某行数据纵向展示时 创建注释: ...
- 数据库-Oracle【Oracle数据库设置默认表空间问题及Oracle,SQL,MySQL的自增变量设置】...
一. Oracle数据库设置默认表空间问题 DBA们经常会遇到一个这样令人头疼的问题:不知道谁在Oracle上创建了一个用户,创建时,没有给这个用户指定默认表空间,所以这个用户就会采用默认的表空间-- ...
- ajax默认什么方法,ajax设置默认值ajaxSetup()方法
$(function(){ //设置全局 jQuery Ajax全局参数 $.ajaxSetup({ type:"POST", async:false, cache:false, ...
最新文章
- Oracle HowTo:如何使用Oracle case函数
- 对象分割--Instance-sensitive Fully Convolutional Networks
- Python学习(13)函数
- CTFshow 命令执行 web47
- 好色派:日省 6 小时,神策分析是我的“菜”
- 久违的反省,容忍现在的自己
- c vector用法是什么
- 【概念集锦】之 shim和polyfill
- GitHub练习——如何将本地已有项目添加到github
- 用信号量实现进程互斥示例和解决哲学家就餐问题
- 稳扎稳打 Silverlight 4.0 教程
- Java实现生成32位UUID工具类
- Ultra Edit中编辑并一键运行Ansys命令流
- linux运维阿铭,阿铭Linux
- 如何把应用程序和资料转移到新的硬盘?
- 电大计算机C语言1253,1253《C语言程序设计》电大期末精彩试题及其问题详解
- 算法设计:2.向下取整、向上取整符号
- Bootstrap 超大屏幕(Jumbotron)
- 怎么让一天有36小时
- 乱七八糟记一下乱七八糟的碎片化知识