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