2011-08-15 154 views
1

我有兩個varchar(30),startDate和endDate coloumn,它有日期值,也在該coloumn空值。我想比較sql server 2005/2008中的日期範圍。成纔像如何比較日期範圍varchar coloumn

WHERE e2.type=1 
    AND coloumn1 between convert(datetime,startDate,101) and convert(datetime,endDate,101) 

當我嘗試執行它給我一個錯誤 varchar數據類型爲日期時間數據類型的轉換導致外的範圍內的值。

回答

1

該錯誤消息表示存儲在varchar中的值無法通過SQL轉換爲日期時間。您需要深入瞭解數據並找到問題行,這可能是一件棘手的事情。開始是這樣的:

SELECT StartDate, isdate(StartDate) 
from MyTable 
where StartDate is not null 
    and isdate(StartDate) = 0 

...和相同的結束日期。你將不得不玩這個,因爲字符串到最新的轉換可能會變得非常棘手。 (不用說,將日期時間值存儲爲日期時間值會更好,如果您可以更改表格結構,請這麼做!)