我正在开发一个提供报告上显示的记录的查询,并注意到以前的开发人员使用“=<”和“>=”来比较作为所述查询参数的两个日期时间。这些参数作为字符串传递,不会转换为日期时间对象。 我注意到,在查询结果中,我丢失了大约两天的数据。 我想知道使用“=<”和“>=”而不是使用“Between”比较这些日期时间时精度是否有任何差异(这可能是导致结果中数据丢失的原因)。
为了完整起见,以下是当前使用的比较的简单示例:
Declare @DateTo varchar(max) = '2013-07-29'
Declare @DateFrom varchar(max) = '2013-07-07'
SELECT * FROM Records WHERE Date =< @DateTo AND Date >= @DateFrom
最佳答案
(SQL中没有=<
运算符,您指的是<=
运算符。)
between
运算符比较包含在内的值,因此与使用 <=
相同和>=
运算符。
如果这些值只是一个日期,您可以使用类似的包含值。如果它们还包含时间成分,您应该考虑使用独占的更高限制。这样您就可以查询不同的范围而不会重叠,例如值2013-07-30 00:00:00.000
不会同时包含在范围 2013-07-07 to 2013-07-30
中和2013-07-30 to 2013-08-02
。表达式Date < '2013-07-30'
将包括 2013-07-29 23:59:59.999
之前的所有值但不是2013-07-30 00:00:00.000
.
示例:
Declare @DateTo varchar(max) = '2013-07-30' -- the day after the range
Declare @DateFrom varchar(max) = '2013-07-07'
SELECT * FROM Records WHERE Date < @DateTo AND Date >= @DateFrom
关于sql - 使用 '=<' 和 '>=' 而不是使用 'between' 比较两个日期时,精度是否有差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18074741/