我正在尝试做一些非常简单的事情,但我很困惑为什么它不起作用。
我有一个列 ( sysjobschedules.next_run_date
from msdb
),它是一个 varchar,格式类似于 yyyymmdd。我想将其转换为日期时间。我使用了相当直接的命令CONVERT(datetime,next_run_date,112)
,但我不断收到错误算术溢出错误将表达式转换为数据类型日期时间。
此列中的三个不同值是 20120802、20120803 和 20120806。使用上面相同的函数,我能够成功转换所有三个字符串。
我觉得我一定错过了一些明显的东西......?
该列实际上存储为一个 int,它在日期时间中意味着不同的东西,因此您需要在 CONVERT 中执行一个额外的步骤:
为了说明为什么不能直接对 int 执行此操作:
当它是一个整数时,它实际上是自 1900-01-01 以来的天数。