Sql server 2008 SQL Server转换函数查询

Sql server 2008 SQL Server转换函数查询,sql-server-2008,Sql Server 2008,我在一个查询中使用了convert函数 Select * from tblMas where FromDate >= CONVERT(varchar(10), @FromDate,112) @FromDate是一个Datetime参数,我不知道为什么,但是这个查询很好 虽然它不应该是FromDate的DateTime字段,我们正在将它与Varchar字段进行比较 CONVERT(varchar(10),@FromDate,112)以yyyyMMdd格式返回结果。我不知道SQL Serve

我在一个查询中使用了convert函数

Select * from tblMas where FromDate >= CONVERT(varchar(10), @FromDate,112)
@FromDate
是一个
Datetime
参数,我不知道为什么,但是这个查询很好

虽然它不应该是
FromDate
DateTime
字段,我们正在将它与
Varchar
字段进行比较


CONVERT(varchar(10),@FromDate,112)
yyyyMMdd
格式返回结果。我不知道SQL Server是如何比较这个结果并返回正确的结果的。

在比较之前,将有一个从varchar到datetime的隐式类型转换

如果您查看查询平面,您将看到类似的内容

<ScalarOperator ScalarString="[FromDate]&gt;=CONVERT_IMPLICIT(datetime,CONVERT(varchar(10),[@FromDate],112),0)">
在SQLServer2008中,您可以使用

select * 
from tblMas 
where FromDate >= cast(@FromDate as date)

好的,但我认为这不是正确的方法,因为会做出额外的转换努力,你的建议是什么?
select * 
from tblMas 
where FromDate >= cast(@FromDate as date)