诡异的SQLServer的datetime类型
2010-11-05 17:33
今天遇到了一个问题。。才发现SQLServer的datetime类型真是诡异。。。
具体就是,要把日期时间插入数据库,每秒钟若干条,日期时间的类型是datetime,上面有唯一索引。 异常出来了:在插入的时候不规则的出现唯一索引冲突的异常。检查了Java部分的代码,没有问题,年月日时分秒是一样的,但是毫秒肯定不一样。后来考虑到可能是SQLServer的问题, 就写了短程序测试了一下,果然: SQLServer在保存毫秒的时候有"舍入"的现象。 比如保存的是2010-10-01 10:00:00. 002,那么这个可能会被舍入到2010-10-01 10:00:00. 000 然后就唯一索引冲突了。 后来从MSDN的文档上也确认了这个说法。 最后自己写了段程序,从 [日期.时间.000] 插入到[日期.时间.999],发现大概66%的数据丢掉了(唯一索引冲突),数据库里面只保存了 [日期.时间.000] [日期.时间.003] [日期.时间.006] ..... [日期.时间.999] 这样的非连续的数据。 总觉得连毫秒这样的精度还要舍入,很奇怪的做法 |