【问题标题】:Numeric to datetime conversion in SQL Server 2016 errorSQL Server 2016 错误中的数字到日期时间转换
【发布时间】:2020-09-16 17:56:53
【问题描述】:

这适用于 SQL Server 2016。

MyDate
---------
20200915
20201007

不幸的是数据类型是numeric(8,0)

我正在尝试获取日期

2020-09-15 00:00:00
2020-10-07 00:00:00

代码:

convert(varchar, MyDate, 120) 

请推荐

谢谢

【问题讨论】:

  • 我想真正的问题是为什么你的 columnnumeric(8,0) 而不是 date

标签: sql sql-server tsql datetime


【解决方案1】:

你可以这样写:

convert(date, convert(varchar(8), mydate))

SQL Server 不允许将整数直接转换为日期,因此我们需要将中间转换为字符串。如果您想要一个日期,请使用datetime 而不是date

如果您的某些数字日期可能无效,您可以使用try_convert() 而不是convert()

另一种选择是算术和datefromparts()(我怀疑这更有效):

datefromparts(mydate / 10000, (mydate % 10000) / 100, mydate % 100)

【讨论】:

    猜你喜欢
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 2019-08-31
    相关资源
    最近更新 更多