【问题标题】:MS SQL Converting a String to Datetime issue [duplicate]MS SQL将字符串转换为日期时间问题[重复]
【发布时间】:2021-07-30 08:03:38
【问题描述】:

我正在尝试将字符串转换为日期时间,但得到了意想不到的结果。

Select Convert(DateTime, '2015-08-10 13:08:01.725', 121);

结果:

2015-08-10 13:08:01.727

请注意,毫秒已从 725 更改为 727。

我使用的是 Microsoft SQL Server 2014 (SP3-CU2) (KB4482960) - 12.0.6214.1 (X64)。

【问题讨论】:

  • datetime2 是否更符合您的期望?
  • 预期结果是什么?
  • 这个Q&A 解释了一个类似的问题。
  • @AmitVerma 预期的结果是毫秒显示为 725,而不是 727。我已编辑问题以澄清这一点。

标签: sql-server


【解决方案1】:

这是意料之中的,datetime 只能精确到 1/300 秒,而 0.725 不能用它来表示。结果,它被四舍五入到最接近的 1/300,即 0.726666666666~,然后显示为 0.727,因为显示层精确到 3 位。

如果您想精确到 1/1000 秒,请使用更精确的数据类型。 datetime2(3) 似乎是你所追求的:

SELECT CONVERT(datetime2(3), '2015-08-10 13:08:01.725', 121);

【讨论】:

    【解决方案2】:

    这是因为 DATETIME 被四舍五入到 0.000、0.003 或 0.007 秒的增量

    直接来自微软documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      • 1970-01-01
      • 2019-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多