Varchar在varchar日期范围之间转换了日期时间检查。这是检查的正确方法吗?

时间:2014-12-24 07:41:08

标签: sql-server-2008

我正在进行一些查询,并通过以下方式找到了一些where子句

convert(varchar, datefield, 101) between convert(varchar, @startdate, 101) and convert(varchar, @enddate, 101)

我的问题是检查日期范围之间datetime值的正确方法吗?这种方法会获取错误的值吗?如果是,请提供一些解释。

1 个答案:

答案 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())
  1. 无需varchar&lt; - &gt;日期时间转换
  2. 无需考虑语言环境