【发布时间】:2017-09-02 06:33:37
【问题描述】:
我在 SQL Server 中有这个查询:
SELECT
[Order Date], SUM([Profit])
FROM
[sample].[dbo].[superstore]
WHERE
[Order Date] BETWEEN '2012-06-21 00:00:00.000' AND '2012-09-21 23:59:59.999'
GROUP BY
[Order Date]
ORDER BY
[Order Date];
此查询的结果有记录,[Order Date] 为2012-06-21 00:00:00.000
但是有了这个查询
SELECT
[Order Date], SUM([Profit])
FROM
[sample].[dbo].[superstore]
WHERE
[Order Date] BETWEEN '2012-06-21 00:00:00.000' AND '2012-09-21 23:59:59.998'
GROUP BY
[Order Date]
ORDER BY
[Order Date];
我没有得到这个记录。
SQL Server 是否有任何此处缺少的属性?
提示:[Order Date] 的类型是 datetime。
【问题讨论】:
-
DATETIME在 SQL Server 中的精度为 3.33 毫秒,这会导致这些奇怪的舍入效果。建议改用DATETIME2(n)、DATE和TIME,它们是在 SQL Server 2008 中引入的——这些类型没有这种奇怪的精度和舍入问题
标签: sql sql-server datetime