我在 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
。
原文由 Babak 发布,翻译遵循 CC BY-SA 4.0 许可协议
SQL Server 日期/时间列的精度因确切类型而异。在您的第一个中,“0.999”正在四舍五入。
最安全的方法是避开
between
和时间组件,例如: