2017-03-03 5 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をintとして使うのであれば恐ろしい、恐ろしいデータモデルですが、確かにいいキャッチです。私の+1。 – scsimon

関連する問題