sql-server - 为什么 CAST ('20140904 23:59:59.999' AS datetime) 等于 '2014-09-05 00:00:00.000' ?

标签 sql-server datetime casting sql-server-2014

你自己尝试一下,也许和我的环境有某种关系:

查询:

SELECT CAST('20140904 23:59:59.999' AS datetime)

结果:

2014-09-05 00:00:00.000

请解释一下这种现象。

更新:Alex 提到日期时间值四舍五入为 0.000、0.003 或 0.007 秒的增量。问题是为什么?

最佳答案

日期时间值四舍五入为 0.000、0.003 或 0.007 秒的增量

我认为你应该使用

SELECT CAST('20140904 23:59:59.997' AS datetime)

这将返回:

 2014-09-04 23:59:59.997

您可以在这里找到更多信息:http://msdn.microsoft.com/en-us/library/ms187819.aspx

这是 SQL 中日期时间函数的准确性。

如果您使用的是较新版本的 MSSQL,则可以使用 datetime2,因为其精度为 100 纳秒。

日期时间2:http://msdn.microsoft.com/en-us/library/bb677335.aspx

关于sql-server - 为什么 CAST ('20140904 23:59:59.999' AS datetime) 等于 '2014-09-05 00:00:00.000' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25760075/

相关文章:

sql - 根据额外重量计算运费

datetime - Drupal 6 : Date module and displaying only DATE value, 没有时间

postgres中的SQL将重复事件的日期时间转换为 future 的日期时间

java - 即使我不使用 Double,ClassCastException Double 也会 float

c++ - 是否可以在类定义之外以某种方式提供相当于 operator bool cast 的东西?

c# - 600K 记录的数据库或平面文件?

sql - 如何在同一表的一列中查找重复值而在另一列中查找不同值?

sql - 删除 SQL 中括号内的文本

Ruby - 更改时间实例的日期部分

C 工作面试 - 类型转换和比较