我有以下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');
任何帮助表示赞赏。
答案 0 :(得分:3)
如果您要检查where dstamp >= trunc(sysdate) and dstamp < trunc(sysdate) + 1
是否属于当天,我建议:
theme
尽管有些冗长,但这比在要比较的列上应用日期函数要有效。在谓词的列上使用函数会使查询不可SARG,即无法利用现有索引。
答案 1 :(得分:2)
该日期已为日期。您不需要转换它。您可能需要删除时间部分。这是您想要的吗?
WHERE TRUNC(dstamp) = TRUNC(sysdate)