注册 登录
编程论坛 SQL Server论坛

关于between...and....的问题

南川 发布于 2010-09-04 10:41, 403 次点击
CREATE TABLE dbo.DateTest(
  PK INT IDENTITY,
  OrderDate DATETIME
  )
go
INSERT dbo.DateTest(OrderDate)
  VALUES('10/9/01 00:00')
INSERT dbo.DateTest(OrderDate)
  VALUES('10/9/01 23:59')
INSERT dbo.DateTest(OrderDate)
  VALUES('10/9/01 11:59:59.995 pm')
INSERT dbo.DateTest(OrderDate)
  VALUES('10/9/02');

建一张表
只有本站会员才能查看附件,请 登录


执行查询语句
SELECT *
  FROM dbo.DateTest
  WHERE OrderDate BETWEEN '10/9/1' AND '10/9/1 11:59:59.998 PM';
结果如下
只有本站会员才能查看附件,请 登录


问题:为什么第3条数据不是23:59:59.995而是997?
3 回复
#2
cnfarer2010-09-04 17:02
为什么不是995?应该是存储误差问题
#3
qingshuiliu2010-09-05 07:47
datatime可以精确到3%秒(3.33毫秒)
摘自MSDN:
datetime 秒的小数部分精度的舍入
将 datetime 值舍入到 .000、.003、或 .007 秒的增量。
所以当值为 11:59:59.99X的时候,最好就会变成11:59:59.993,11:59:59.997,如果是11:59:59.999就会成为增加一天,后面全为零。
#4
南川2010-09-05 09:12
原来如此。。。。Thank you........
1