使用TO_DATE函数后在Oracle中比较两个日期

时间:2020-03-10 10:49:27

标签: sql oracle date where-clause

我有以下Oracle查询,它将表中的今天日期和日期字段转换为相同格式。但是,当试图将两者进行比较时,它们并不相等。

CAST(dstamp As Date), TO_DATE(CURRENT_DATE,'dd-MON-YY HH24.MI.SS','NLS_DATE_LANGUAGE = American')

强制转换用于表中的字段,都返回。

enter image description here

但是,当添加以下where语句时,不返回任何行。我无法弄清楚为什么这些分类不相等?

WHERE CAST(dstamp As Date) = TO_DATE(CURRENT_DATE,'dd-MON-YY HH24.MI.SS','NLS_DATE_LANGUAGE = American');

任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:3)

如果您要检查where dstamp >= trunc(sysdate) and dstamp < trunc(sysdate) + 1 是否属于当天,我建议:

theme

尽管有些冗长,但这比在要比较的列上应用日期函数要有效。在谓词的列上使用函数会使查询不可SARG,即无法利用现有索引。

答案 1 :(得分:2)

该日期已为日期。您不需要转换它。您可能需要删除时间部分。这是您想要的吗?

WHERE TRUNC(dstamp) = TRUNC(sysdate)