使用' yyyymmdd'将Varchar转换为Datetime格式

时间:2017-06-28 16:28:04

标签: sql sql-server-2008 date

我正在处理日期处理程序。来自文件的日期格式为' yyyymmdd'并且需要转换为DATETIME数据类型以用于内置日期函数,例如dateadd或datepart。

CONVERT(DATETIME,datestring) - 引发错误'算术溢出错误将表达式转换为数据类型datetime。'

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

将此varchar格式转换为日期或日期时间的其他任何方式?

2 个答案:

答案 0 :(得分:1)

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

尝试:

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

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

<小时/> 参考:

答案 1 :(得分:1)

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

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