SQL Server转换函数查询

时间:2011-09-14 11:30:48

标签: sql-server-2008

我在我的一个查询中使用了转换函数

Select * from tblMas where FromDate >= CONVERT(varchar(10), @FromDate,112)

@FromDate是一个Datetime参数,我不知道为什么但这个查询运行正常。

虽然它不应该FromDate属于DateTime字段,我们会将其与Varchar字段进行比较。

CONVERT(varchar(10), @FromDate, 112)yyyyMMdd格式返回结果。我很遗憾SQL Server正在比较这个并返回正确的结果。

1 个答案:

答案 0 :(得分:3)

在比较之前会有从varchar到datetime的隐式类型转换。

如果查看查询计划,您会看到类似的内容。

<ScalarOperator ScalarString="[FromDate]&gt;=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)