我正在研究其他人写的T-SQL查询并看到了这一点。
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来自报告,所以我不是源数据类型。
答案 0 :(得分: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