SYSDATE 和 Date From 列之间的 Oracle 时间差异

Oracle Time Difference between SYSDATE and 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'

我知道了:

365

这是我的 table 描述:

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'that 结果转换为日期。对于本地设置的许多值,这只会失败。

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

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

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