2015-04-19 78 views
0

我有一個命令如下:比較日期時間在Oracle

to_char(to_date('req_date','yyyy/mm/dd'),'yyyymmdd) > '20140401'; is success 

但是,當我已經一年改變2014至15年後,有一個錯誤格式字符串。 如下

to_char(to_date('req_date','yyyy/mm/dd'),'yyyymmdd) > '20150401'; 

我不知道這是error.Let的修復我。 感謝所有

+2

這些實際上不是你的命令,對嗎?至少缺少一個報價,並且'req_date'被引用,因此它不是有效的日期。請複製粘貼實際的命令。 – RealSkeptic

+1

不要在DATE上使用TO_DATE,它會隱式地將其轉換爲字符串,然後使用特定於語言環境的NLS格式返回到日期。請參閱http://stackoverflow.com/a/29559609/3989608 –

回答

0

TO_CHAR(TO_DATE( 'req_date', 'YYYY/MM/DD'),'YYYYMMDD)> '20140401';

  1. 'req_date'不是日期,它是一個字符串。您不需要單引號,按原樣使用日期列。

  2. DATE切勿使用TO_DATE,它會隱式轉換爲字符串,然後回使用特定語言環境的NLS日期格式。在這裏看到我的答案https://stackoverflow.com/a/29559609/3989608

  3. 最重要的是,您正在比較兩個STRINGS。您需要比較日期 s。您需要保留DATE計算的日期。 TO_CHAR用於顯示,而TO_DATE用於將字符串文字轉換爲DATE。

所以,你需要做的日期比較爲:

req_date > to_date('20140401','YYYYMMDD')