我在我的一个查询中使用了转换函数
Select * from tblMas where FromDate >= CONVERT(varchar(10), @FromDate,112)
@FromDate
是一个Datetime
参数,我不知道为什么但这个查询运行正常。
虽然它不应该FromDate
属于DateTime
字段,我们会将其与Varchar
字段进行比较。
CONVERT(varchar(10), @FromDate, 112)
以yyyyMMdd
格式返回结果。我很遗憾SQL Server正在比较这个并返回正确的结果。
答案 0 :(得分:3)
在比较之前会有从varchar到datetime的隐式类型转换。
如果查看查询计划,您会看到类似的内容。
<ScalarOperator ScalarString="[FromDate]>=CONVERT_IMPLICIT(datetime,CONVERT(varchar(10),[@FromDate],112),0)">
从日期时间中删除时间部分的另一种方法。
select *
from tblMas
where FromDate >= dateadd(day, datediff(day, 0, @FromDate), 0)
在SQL Server 2008中,您可以使用
select *
from tblMas
where FromDate >= cast(@FromDate as date)