不应该返回T-SQL查询返回项目

Gre*_*egD 2 sql t-sql sql-server sql-server-2000

这是场景.有问题的列称为'datein',它的类型是'datetime'.对于'datein',我有三行,值为'2009-10-01 00:00:00.000'.为什么此查询返回上述行?

SELECT  *
FROM    t_call AS tc
WHERE   tc.datein >= '2009-09-30 00:00:00.000'
        AND tc.datein <= '2009-09-30 23:59:59.999'
Run Code Online (Sandbox Code Playgroud)

运用

SELECT  *
FROM    t_call AS tc
WHERE   tc.datein BETWEEN '2009-09-30 00:00:00.000'
        AND '2009-09-30 23:59:59.999'
Run Code Online (Sandbox Code Playgroud)

返回相同的结果

Aus*_*nen 7

这是第二个千分之一的精度缺乏.请尝试".997".

MSDN DateTime文档

运行这个,你会看到:

declare @dt datetime

select @dt = '2009-09-30 23:59:59.999'
select @dt
Run Code Online (Sandbox Code Playgroud)

  • SQL Server 2008的DATETIME2日期类型将精确到100ns的精度,因此DATETIME2不会出现此问题 (2认同)