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()
.
我是 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()
.