【问题标题】:Converting Varchar to Datetime using 'yyyymmdd' format使用 'yyyymmdd' 格式将 Varchar 转换为日期时间
【发布时间】:2017-12-02 03:27:54
【问题描述】:

我正在使用日期处理程序。来自文件的日期格式为“yyyymmdd”,需要转换为 DATETIME 数据类型,以便与 d​​ateadd 或 datepart 等内置日期函数一起使用。

CONVERT(DATETIME,datestring) - 引发错误“将表达式转换为数据类型日期时间的算术溢出错误。”

我曾考虑将字符串拆分为单独的部分并重新组合它们以形成有效的日期时间戳,但如果可能的话,我想避免这种情况。

还有其他方法可以将此 varchar 格式转换为日期或日期时间吗?

【问题讨论】:

  • 您能否提供您尝试执行的完整 SQL 以及提供给 CONVERT 的参数值?

标签: sql sql-server-2008 date


【解决方案1】:

根据您的错误,您的datestring 可能会存储为int。您可以将其转换为字符串,然后将其转换为 datetime 类型,如下所示:

试试:

convert(datetime,convert(char(8),datestring))

convert(datetime2(2),convert(char(8),datestring))

参考:

【讨论】:

  • 感谢您的成功。我显然在阅读错误消息时遇到了麻烦,我会努力解决的。我最终使用的最终代码是:code : CONVERT(DATE,CONVERT(VARCHAR(20),@nextdate))as 'nextdate'; 这成功地从格式为“20180628”的字符串中生成了一个 DATE 类型对象
  • @Tribalnecktie 乐于助人!
【解决方案2】:

显而易见的解决方案是try_convert(),但这在 SQL Server 2008 中不起作用。而是使用case

select (case when datestring between '17530101' and '99991212'
             then convert(datetime, datestring)
        end)

【讨论】:

    猜你喜欢
    • 2011-01-23
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 2017-07-20
    • 1970-01-01
    • 2013-08-13
    相关资源
    最近更新 更多