试了一下,确实有这个问题,但不能就此就确定是bug:select * from ( select cast('2014-08-02 00:00:00' as datetime) d )t WHERE d > cast('2014-08-01 23:59:59.998' as datetime) /* 2014-08-02 00:00:00.000 */ select * from ( select cast('2014-08-02 00:00:00' as datetime) d )t WHERE d > cast('2014-08-01 23:59:59.999' as datetime)
通过进一步分析,发现如下,这就不难解释上述的问题了,显然这个不是bug:select cast('2014-08-01 23:59:59.999' as datetime) /* 2014-08-02 00:00:00.000 */select cast('2014-08-01 23:59:59.998' as datetime) /* 2014-08-01 23:59:59.997 */
from
(
select cast('2014-08-02 00:00:00' as datetime) d
)t
WHERE d > cast('2014-08-01 23:59:59.998' as datetime)
/*
2014-08-02 00:00:00.000
*/
select *
from
(
select cast('2014-08-02 00:00:00' as datetime) d
)t
WHERE d > cast('2014-08-01 23:59:59.999' as datetime)
/*
2014-08-02 00:00:00.000
*/select cast('2014-08-01 23:59:59.998' as datetime)
/*
2014-08-01 23:59:59.997
*/
DateTime在数据库里不是一个长整型的数据吗?
那应该是精度比毫秒还要高的,
为什么要四舍五入呢?
DateTime在数据库里不是一个长整型的数据吗?
那应该是精度比毫秒还要高的,
为什么要四舍五入呢?每个时钟单位是3.33毫秒。这也就是为什么DATETIME 数据类型最小精确度是1/300