带日期范围的T-SQL查询

Moo*_*Moo 3 t-sql sql-server sql-server-2005

我有一个相当奇怪的'bug'和一个简单的查询,我依稀记得很久以前在某个地方阅读它的原因,但是会喜欢有人来刷新我的记忆.

该表是一个基本ID,Datetime表.

查询是:

select ID, Datetime from Table where Datetime <= '2010-03-31 23:59:59'
Run Code Online (Sandbox Code Playgroud)

问题是查询结果包括Datetime为'2010-04-01 00:00:00'的结果.第二天.它不应该.

任何人?

干杯

SQL*_*ace 8

看一下SQL Server中的日期如何存储?以及如何在SQL Server中使用日期?

如果这是一个smalldatetime它有1分钟的精度,所以如果向上舍入,对于datetime它是300毫秒

DECLARE @d DATETIME
SELECT @d = '2001-12-31 23:59:59.999'

SELECT @d
Run Code Online (Sandbox Code Playgroud)

2002-01-01 00:00:00.000

DECLARE @d DATETIME
SELECT @d = '2001-12-31 23:59:59.998'

SELECT @d
Run Code Online (Sandbox Code Playgroud)

2001-12-31 23:59:59.997

在你的情况下,总是在午夜使用不到第二天

< '20100401'
Run Code Online (Sandbox Code Playgroud)