2012-09-04 156 views
1

我正在使用oracle表來提取數據。在其中一個查詢中,我使用'where'來過濾日期。Oracle日期格式錯誤

To_Date(VDATU,'DD-MON-YYYY') >= '03-Jun-2012' 
AND To_Date(VDATU,'dd-mon-yy') <= '04-Sep-2012' 

我得到錯誤,

ORA-01861: literal does not match format string 

我使用( 'DD-MM-YY'),但仍是給予同樣的錯誤嘗試。有什麼問題?

+0

由於To_Date調用或由於字符串的隱式轉換(例如''03 -Jun-2012'')而導致日期錯誤。 –

回答

2

您正試圖將VDATU(推測爲VARCHAR2)轉換爲日期。

在一個地方你有DD-MON-YYYY和在其他你有dd-mon-yy

這是哪一個? VDATU不能同時適用於兩者。

+0

是的,它是varchar2。它的格式是'01122011'。什麼是用於轉換的正確格式? – Olivarsham

+0

你的例子不明確,但是'ddmmyyyy'(12月1日)或'mmddyyyy'(1月12日)。 –

2

你要比較一個DATEString,嘗試改爲:

To_Date(VDATU,'DD-MON-YYYY') >= To_Date('03-JUN-2012','DD-MON-YYYY') 
AND To_Date(VDATU,'dd-mon-yy') <= To_Date('04-SEP-2012','DD-MON-YYYY') 

如果VDATU已經是一個日期,你不應該將它轉換to_date,所有你需要做的是:

VDATU >= To_Date('03-JUN-2012','DD-MON-YYYY') 
AND VDATU <= To_Date('04-SEP-2012','DD-MON-YYYY')