请教Oracle 11g中日期相减的问题

SQL> select sysdate - to_date('15-JUL-02')
from dual;
得到的结果应该是两个日期相隔的天数,但结果是4454.70671,天数怎么可能会是小数呢?这背后的机制是怎样的?

第1个回答  2014-09-24
oracle 两个时间相减默认的是天数,天数怎么不可能是小数,
你一定要得到整数的话加个round吧,round(sysdate - to_date('15-JUL-02'))
http://blog.csdn.net/redarmy_chen/article/details/7351410
给你一个连接,去看看,嘿嘿,其实我平时也没注意,追问

谢谢,请问4454.70671的0.70671应该怎么理解?一天中的70.671%吗?

追答

其实我想觉得FLOOR好点,这样不管小数是多少就只算天了,这应该是你想要的
FLOOR(sysdate - to_date('15-JUL-02'))

第2个回答  2014-09-24
1、你按秒看明白了。
SQL> alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
2、select sysdate from dual;
2014-09-24 17:18:30
select to_date('15-JUL-02') from dual;
0015-07-02 00:00:00
select trunc(sysdate) from dual;
2014-09-24 00:00:00
3、所以你用trunc(sysdate)就对了
select trunc(sysdate)-to_date('15-JUL-02') from dual;
第3个回答  推荐于2020-12-26
sysdate是有时间的,你不可能正好查询的是00:00:00.如果想显示的是天数的话,trunc一下sysdate就行了本回答被提问者采纳
第4个回答  2014-09-24
小数是现在时间到今天早上零点的时分秒产生的,

select sysdate-trunc(sysdate) from dual;

4454是天数。