2017-03-03 221 views
2

我正在研究別人編寫和看到過的T-SQL查詢。將日期轉換爲varchar,然後將其轉換回日期

AND Cast(m.MeasurementDateTime as date) >= cast('''+cast(@StartDate as varchar(100)) + ''' as date) 
AND cast(m.MeasurementDateTime as date) <= cast('''+cast(@EndDate as varchar(100)) + ''' as date)' 

爲什麼有人會這樣做?我錯過了什麼嗎?它與

CAST(@StartDate AS DATE) 

對不對? @EndDate和@StartDate來自一個報告,所以我不是源數據類型。

+1

你的猜測是不比任何人差...除非你可以直接問他們還是有一定的樣本數據(輸入表值)與你一起玩可能永遠不會發現。 – Igor

回答

3

你能打印@StartDate來查看它的格式嗎?如果有例如整數格式,我們不能直接施放到一個日期:

select cast(20031016 as date) 
Explicit conversion from data type int to date is not allowed. 

select cast(cast(20031016 as varchar) as date) 
16.10.2003 00:00:00 
+1

不錯的使用案例。可怕的,可怕的數據模型,如果他們使用@startDate作爲整數,但很好的捕獲肯定。來自我的+1。 – scsimon

相關問題