2014-09-11 56 views
0

我有不同的格式的日期:比較不同格式的Oracle SQL日期

日期1:30-JAN-14

日期2:2014-01-30 10:06:04.0

我嘗試使用下面的兩個日期進行比較:

to_char(date2,'YYYY-MM-DD HH24:MM:SS') <> to_char(date1,'dd-MON-YY') 

但它給出了date1部分的以下錯誤:

Lietral does not match format String 

我試圖直接

date2<>date1 

比較它們,我再次gtting相同的錯誤

編輯:日期2爲varchar和日期1是DATE

+3

你有日期或字符串?你談論日期,但日期沒有格式。表示日期的字符串具有格式。但是,在一個字符串上調用'to_char'沒有任何意義,只能在字符串上調用'to_date'。另外,平等會是什麼樣子?比較兩者時,是否要忽略第二個值的時間分量? – 2014-09-11 02:07:45

+0

Date2是一個varchar列 日期1列的類型是DATE 2)我想忽略Date2的時間組件。我只是想檢查這兩個日期是否不相等 – user2133404 2014-09-11 02:10:06

回答

1

可能最容易使用substr並截斷從date2列中的時間戳。然後你可以使用to_date比較:

select * 
from sometable 
where date1 <> to_date(substr(date2,1,10), 'YYYY-MM-DD') 
+0

謝謝。我沒有收到任何錯誤。但這兩個日期的處理方式不同。我希望30-JAN-14和2014-01-30 TIME平等。你能幫我用這個 – user2133404 2014-09-11 02:28:09

+0

@ user2133404 - 你看過小提琴嗎?它根據您的樣本數據返回相同的數據。 – sgeddes 2014-09-11 02:29:16

+0

對不起,它的工作正常。非常感謝 – user2133404 2014-09-11 02:54:19

0

你應該日期類型轉換字符串相同的格式進行比較

0

你可以試試這個。 TO_CHAR(DATE2, 'YYYY-MM-DD')<> TO_CHAR(DATE1, 'YYYY-MM-DD')

+0

無效號碼 - 我認爲它在日期1 – user2133404 2014-09-11 02:20:37

+0

與sysdate不適用這種方法:)他返回dd/mm/yy而不是dd/mm/yyyy – delive 2017-12-22 09:49:51