SYSDATE和来自列的日期之间的Oracle时差

我对Oracle很陌生。 我有这个问题,我得到了365天的差异,而这两个日期的差异只有一天。

这是我的SYSDATE查询输出:

SELECT to_date(SYSDATE,'yyyy-MM-dd')FROM LOGINRECORDS

15-OCT-11

这是来自列查询输出的日期:

SELECT to_date(LoginDate,'yyyy-mm-dd')FROM LOGINRECORDS WHERE LoginRecordId ='1000001'

15-OCT-10

当我运行这个查询时:

SELECT(to_date(SYSDATE,'yyyy-MM-dd') - to_date(LoginDate,'yyyy-MM-dd'))difference FROM LOGINRECORDS WHERE LoginRecordId ='1000001'

我懂了:

365

这是我的表格描述:

CREATE TABLE LOGINRECORDS
(
    LoginRecordId NUMBER GENERATED ALWAYS AS IDENTITY START WITH 1000000 INCREMENT BY 1,    
    LoginDate DATE,
    patientUserId NUMBER
)

希望你们愿意提前帮助Tq。


这个表达式:

to_date(SYSDATE, 'yyyy-MM-dd') 

没有意义。 SYSDATE已经是日期。 所以,这个表达式使用系统上的任何本地设置将SYSDATE转换为一个字符串。 然后,它使用格式'yyyy-MM-dd'将该结果转换为日期。 对于本地设置的许多值,这只会失败。

如果你想要有所不同,那就做这样的事情:

SELECT (trunc(SYSDATE) - trunc(LoginDate)) as difference
FROM LOGINRECORDS
WHERE LoginRecordId = '1000001';

请注意,在Oracle中, DATE数据类型具有时间分量,因此使用trunc() 。 如果您知道LoginDate没有时间组件,那么该部分不需要trunc()

链接地址: http://www.djcxy.com/p/36943.html

上一篇: Oracle Time Difference between SYSDATE and Date From Column

下一篇: Select specific timestamp interval across multiple dates