Oracle SYSDATE和Date From Column的时间差



我是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'

I got this:

365

这是我的表描述:

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

希望大家愿意帮忙,提前通知。

这个表达式:

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()

相关内容

  • 没有找到相关文章

最新更新