oracle sql日期比较

 

总用到时间的比较,就找了点资料,发现网上虽然说的很多,但是比较乱。然后自己也做点实验,在此记录下。。。。

1 SELECT
2   sysdate - DEADLINE,
3   DEADLINE
4 FROM T_FUNC_MISSION;

sysdate为oracle系统时间;

输出结果为:   -6 8:1:34.0      2018-04-30 23:50:00.000000    显然  这样的方式是可以比较时间的,方法简单,但是有点low。

又继续查找资料:

  https://www.cnblogs.com/xuxm2007/archive/2010/12/28/1918652.html

  这篇介绍了很详细,但是发现好多都不是oracle能用的,基本都是SQL Server中的函数。。。。-_-||,

  

  http://liwx.iteye.com/blog/1236382

  这篇介绍的oracle都能用,但是还是有个坑。。

  

1 select sysdate,to_date('2009-2-20 17:45:39','yyyy-mm-dd hh24:mi:ss'),  
2 ROUND(TO_NUMBER(sysdate - to_date('2009-2-20 17:45:39','yyyy-mm-dd hh24:mi:ss')) * 24 * 60)  
3 from dual;

这样的sql是可以运行的,但是如果 套到自己的表中就会报错,无效的数字。

 刚开始是以为to_number里的格式不对,被转换的字符串必须符合数值类型格式

to_number 是Oracle中常用的类型转换函数之一,是将字符串转换为数值型的格式,与TO_CHAR()函数的作用正好相反。

https://blog.csdn.net/dongdong9223/article/details/48972815  有介绍

 

但是为什么dual表查询的时候没报错???很奇怪。。。。

SELECT
  sysdate - DEADLINE
FROM T_FUNC_MISSION;

SELECT sysdate - to_date('2018-4-20 17:45:39', 'yyyy-mm-dd hh24:mi:ss')
FROM dual;

从dual表查出的字段类型是number类型,T_FUNC_MISSION 表查的字段却是intervalds类型(时间差);

 

还是有些疑问:

  dual表有什么不一样吗?

做下记录。。。。。

 

 

  

 

 

 

 

 

  

转载于:https://www.cnblogs.com/startLearning/p/8931334.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值