我們正在重構一個奇怪的系統,在其後端應該存儲爲數字和日期列,具有適當設計的約束的值全部存儲爲varchar(僅使用UI驗證)。問題是,我們做這個新的系統我們的人必須開始這樣運行,而:Varchar字段上的日期時間和整數函數
是否可以操縱這個VARCHAR列作爲整數爲說更低或更高的比較,並考慮到日期存儲在相同的格式dd/MM/yyyy是可以把這也varchar列作爲日期和使用的功能如下:IN BETWEEN?
我們正在重構一個奇怪的系統,在其後端應該存儲爲數字和日期列,具有適當設計的約束的值全部存儲爲varchar(僅使用UI驗證)。問題是,我們做這個新的系統我們的人必須開始這樣運行,而:Varchar字段上的日期時間和整數函數
是否可以操縱這個VARCHAR列作爲整數爲說更低或更高的比較,並考慮到日期存儲在相同的格式dd/MM/yyyy是可以把這也varchar列作爲日期和使用的功能如下:IN BETWEEN?
會是這樣的工作:
SELECT Column1, Column2
FROM Table
WHERE CONVERT(datetime, DateColumn, 3) BETWEEN @StartDate AND @EndDate
你可以添加一個計算列(或一列的視圖),如:
CONVERT(DATE, column_name, 103)
對於性能方面的問題,你可以堅持和/或索引計算列。
但是,如果你打算改變結構,也可以在第一個地方修改數據類型。
一個問題:根據你的經驗,這是一個很大的表現懲罰或不是這樣一個問題。謝謝。 –
除非你有大量的數據,並且已經等待了很長時間才能得到結果,否則這不應該是一個大問題。 –
如果這是你要求的,這不是可靠的。如果你正在處理大量的記錄,並且你將會執行這個查詢很多,我會建議創建一個實際的日期時間列,所以你不需要做CONVERT。 –