首页 > 解决方案 > 使用 TO_DATE 函数后比较 Oracle 中的两个日期

问题描述

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

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

演员表用于我表中的字段,这两个都返回。

在此处输入图像描述

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

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

任何帮助表示赞赏。

标签: sqloracledatewhere-clause

解决方案


如果您要检查是否dstamp属于当天,我建议:

where dstamp >= trunc(sysdate) and dstamp < trunc(sysdate) + 1

虽然有点冗长,但这将比在被比较的列上应用日期函数更有效。在谓词中的列上使用函数会使查询成为非 SARGable,即它不能利用现有索引。


推荐阅读