2012-09-01 34 views
-4

我已經在sql server 2005中保存日期爲VARCHAR 2005 現在我想選擇2013年之前的所有日期,但我不能。SQL 2005比較保存爲VARCHAR的日期

WDATE 09/01/2012 2012年8月13日

我想這些日期與任何其他日期比較 我使用此查詢:

SELECT * FROM Work_Order 
WHERE WDATE < '09/02/2012' 

但減去天那麼個月那麼這些年並非我的情況

+0

你使用了什麼日期格式? – Guffa

+0

其中cast varchar至date列<= 1/1/2011 –

+0

您需要發佈您嘗試過的代碼或轉換表達式,以便人們可以爲您提供幫助。 –

回答

0

如果您的專欄定義爲VARCHAR,那麼看到您的更新問題,您無法做到您想要的內容(在某日期之前選擇記錄)。你需要把它存儲爲DATETIME值或將其丟,也許是這樣的:

SELECT * 
FROM Work_Order 
WHERE CAST(WDATE as DATETIME) < CAST('09/02/2012' as DATETIME) 

我沒有SQL SERVER 2005我自己,所以,語法只是一個猜測。

+1

語法應該很好,這種方法的問題在於它對文化敏感,例如在美國,它將使用MM/DD/YYYY並在英國DD/MM/YYYY左右...... – Lucero

+0

是的;右邊的確應該是一個常量(並且不使用CAST),但我不知道正確的SQL Server 2005語法。隨意編輯答案! – BellevueBob

+0

感謝它在2008 r2上爲我工作,將與2005年一起嘗試 –