我正在进行一些查询,并通过以下方式找到了一些where子句
convert(varchar, datefield, 101) between convert(varchar, @startdate, 101) and convert(varchar, @enddate, 101)
我的问题是检查日期范围之间datetime
值的正确方法吗?这种方法会获取错误的值吗?如果是,请提供一些解释。
答案 0 :(得分:1)
请勿将您的日期转换为varchar
并进行比较,因为string
比较规则并不快。如果您使用>=
和<
来过滤date
列,速度会快得多。
请勿使用以下内容,因为如果时间为00:00:00.000,它可能会从@enddate
返回一些记录。
datefield between @startdate and @enddate
将datetime
转换为date
的最快捷方式。
在SQL Server 2008及更高版本上,您应该转换为date
:
SELECT CONVERT(date, getdate())