文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Sqlserver:datetime类型的精度(不确定性)问题

Sqlserver:datetime类型的精度(不确定性)问题

时间:2010-11-18  来源:jinsen

  where datetime_field between '2010-11-01 00:00:00.000' and '2010-11-01 23:59:59:999'

  环境:sqlserver 2000

  微软官方文档:指明datetime类型的精度为 :千分之三秒(3.33毫秒、0.00333秒)。所有的datetime类型的值在显示、处理时 有所调整。即会圆整到几个特殊的毫秒个位值:0、3、7:如:9 会引起进位调整、5-8引起7调整、2-4引起3调整、0-1引起0调整。

  分析:所以,如果使用了between and的where条件,就可能引起计算失误。

  where datetime_field between '2010-11-01 00:00:00.000' and '2010-11-01 23:59:59:999' 就相当于

  where datetime_field between '2010-11-01 00:00:00.000' and '2010-11-02 00:00:00:000' 这样,具有'2010-11-02 00:00:00:000'值的记录就会出现多次。

 

  解决:根据sqlserver的datetime圆整的特性,可以使用:

  where datetime_field between '00:00:00.000' and ' 23:59:59:998' 来表达一天内的时间范围。记住: ' 23:59:59:999'已经是下一天了。

  或者,使用:

  where datetime_field >= '00:00:00.000' and datetime_field < '下一日 00:00:00.000' 来表达一天内的时间范围。

 

 

 

 

 

 

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载