[英]Comparing two dates in Oracle after using TO_DATE function
我有以下 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');
任何幫助表示贊賞。
如果您試圖檢查dstamp
屬於當天,我建議:
where dstamp >= trunc(sysdate) and dstamp < trunc(sysdate) + 1
雖然有點冗長,但這比在被比較的列上應用日期函數更有效。 在謂詞中的列上使用函數會使查詢不可 SARGable,即它不能利用現有索引。
該日期已經是一個日期。 你不需要轉換它。 您可能需要刪除時間組件。 這是你想要的嗎?
WHERE TRUNC(dstamp) = TRUNC(sysdate)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.