【问题标题】:Cast to datetime is not working on sql server 2016Cast to datetime 在 sql server 2016 上不起作用
【发布时间】:2017-10-25 12:12:01
【问题描述】:

在 sql server 2016 上执行以下查询时出现算术溢出错误。

select cast(2958463.99999999 as datetime)

相同的查询在 sql server 2014 上运行良好。

编辑 1-select cast(2958463.9999999 as datetime) 在 sql server 上工作,唯一的区别是它使用小数点后 7 位而不是最初发布的 8 位。

【问题讨论】:

  • 此错误是由 Microsoft SQL Server 2016 对日期时间类型的处理发生变化引起的。
  • 您确定价值中没有更多内容吗?我只是在几个版本上运行它,并且到处都以相同的方式工作。
  • @YogeshSharma 你能详细说明一下吗?我很好奇。
  • 该查询在我的 2016 实例上运行良好。我得到的输出是9999-12-31 23:59:59.997
  • 甚至 'select cast(2958463.9999999 as datetime)' 小数点后 7 位在 sql server 2016 上运行

标签: sql sql-server sql-server-2014 sql-server-2016


【解决方案1】:

在 2016 年尝试以下(注意最后一位)

select cast(2958463.99999996 as datetime)

【讨论】:

  • 为什么在我手头的 SQL2016s 上没有这个改变就可以工作?
  • 这是有效的,但我不确定原因..你能解释一下吗?谢谢
  • @mohituprim 我怀疑精度问题。看看这个答案
【解决方案2】:

您需要拥有最新的 SQL Server Management Studio。

这适用于服务器版本 2014 (12.0.4439.1) 和 2016(13.0.4435.0) 的实例。

注意:

SQL Server Management Studio 2017 仅适用于实例 2016(13.0.1601.5) 上的 7 位数字

注意 2:

SQL Server Management Studio 2014 仅适用于实例上的 7 位数字 2016(13.0.4435.0)

SQL Server Management Studio 2014 适用于实例 2016(13.0.1601.5) 上的所有数字

SQL Server Management Studio 2014 适用于实例 2014(12.0.4439.1) 上的所有数字

您可以在此处下载最新版本 SQL Server Management Studio 2017

在 SQL Server 实例 2016(13.0.4435.0) 上测试

在 SQL Server 实例 2014(12.0.4439.1) 上测试

在 SQL Server 实例 2016(13.0.1601.5) 上测试

【讨论】:

    猜你喜欢
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    相关资源
    最近更新 更多