来自列

时间:2015-10-11 15:16:31

标签: oracle date difference oracle12c

我对Oracle很新。我有这个问题,我在这2个约会时间里有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'))区别FROM LOGINRECORDS WHERE LoginRecordId =&#39 ; 1000001'

我明白了:

365

这是我的表格描述:

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

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

1 个答案:

答案 0 :(得分:4)

这个表达式:

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