oracle学习笔记--之--时间timestamp小结

系统时间:

SELECT SYSTIMESTAMP  FROM dual;----timestamp类型时间

SELECT SYSDATE FROM dual;----------date类型日期

timestamp转换为char:

SELECT to_char(SYSTIMESTAMP,'yyyy-mm-dd HH24:mi:ss:ff')   FROM dual;----24小时制

SELECT to_char(SYSTIMESTAMP,'yyyy-mm-dd HH:mi:ss:ff am')   FROM dual;----12小时制

char转换为timestamp:

select to_timestamp('2015-6-2 12:34:56.789', 'yyyy-mm-dd hh24:mi:ss.ff') from dual; 

timestamp转换为date:

SELECT CAST(SYSTIMESTAMP  AS DATE) AS cur_time FROM dual; ----cast函数

或者

SELECT SYSTIMESTAMP+0 FROM dual;----自动转换 

date转换为timestamp:

SELECT CAST (SYSDATE AS TIMESTAMP) cur_time FROM dual; ----cast函数

两个timestamp时间类型相减:

select to_char(SYSTIMESTAMP,'yyyy-mm-dd HH24:mi:ss:ff') AS time_1,'2015-06-02 12:34:56.789' AS time_2,(to_timestamp('2015-6-2 12:34:56.789', 'syyyy-mm-dd hh24:mi:ss.ff')-SYSTIMESTAMP) AS time_1_2 from dual;

结果:

time_1 time_2 time_2_1

2015-06-02 13:26:50:539951 2015-06-02 12:34:56.789 -000000000 00:51:53.750951000

可见,两个timestamp相减之后,结果是还是时间,具体到  天,小时,分钟等等;


两个date日期类型的相减:

SELECT SYSDATE AS date_1,to_date('2015-6-2 12:34:56','yyyy-mm-dd hh24:mi:ss')  AS date_2,  (SYSDATE- to_date('2015-6-2 12:34:56','yyyy-mm-dd hh24:mi:ss')) AS date_1_2 FROM dual;

结果:

date_1 date_2 date_1_2

2015/6/2 13:35:29 2015/6/2 12:34:56 0.0420486111111111

可见,两个date类型的相减,是天数

如果相减之后再乘以 *24*3600,就是秒数了。


因此,对于timestamp类型的数值相减,可以先转换为date类型,再进行计算,即可转换为秒数:

select to_char(SYSTIMESTAMP,'yyyy-mm-dd HH24:mi:ss:ff') AS time_1,'2015-06-02 12:34:56.789' AS time_2
,'距现在'||((SYSTIMESTAMP+0)-(to_timestamp('2015-6-2 12:34:56.789', 'syyyy-mm-dd hh24:mi:ss.ff')+0))*24*3600||'秒' AS time_1_2 from dual;

结果:

time_1 time_2 time_1_2

2015-06-02 13:45:53:751646 2015-06-02 12:34:56.789 距现在4257秒


PS:

1:CAST():

在date转换为timestamp时,涉及到一个函数 cast();

此函数作用:进行数据类型转换

举例:

SELECT CAST('1111' AS VARCHAR2(12)) AS tt FROM dual;

SELECT CAST('1111' AS NUMBER(22)) AS tt FROM dual;

------------也可以转换一个集合等。











  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值