天数的计算
SQL Server中:
select datediff(day,'2012-05-02 10:11','2012-05-01 11:11')
结果为1天,只判断日期中的天数,是不根据时间来判断的。
但是转到Oracle:
select trunc((to_date('2012-05-02 10:11','YYYY-MM-DD HH:MI') - to_date('2012-05-01 11:11','YYYY-MM-DD HH:MI'))) as datediff from dual
结果为0,只有把前面一个日期改成'2012-05-02 11:11'之后的时间才返回1天。
我要求是只根据天数来求值,看来要统一把比较的日期改到最小单位为天的日期,实际使用中是要把sysdate与结果集中字段计算的,该字段compdate是YYYY-MM-DD HH:MI格式的varchar2类型,可以这么写:
select trunc(to_date(to_char(sysdate,'YYYYMMDD'),'YYYYMMDD') - to_date(to_char(to_date(compdate,'YYYY-MM-DD HH:MI'),'YYYYMMDD'),'YYYYMMDD')) from dual
select trunc(sysdate) - trunc(to_date('2012-05-01 10:20','YYYY-MM-DD HH24:MI')) from dual