将日期转换为varchar然后将其重新投射到日期

时间:2017-03-03 21:21:38

标签: sql-server tsql date casting

我正在研究其他人写的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来自报告,所以我不是源数据类型。

1 个答案:

答案 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