我试图将列的日期连接到一天的固定时间,然后将整个事件作为DATETIME
。在连接的日期和时间上铸造DATETIME
固定时间是上午5:30。
我使用的日期列需要调整,因为它显示结束什么时候运行的日期/时间;我想用开始日期/时间。
开始日期/时间不可用作其自己的列,但是我有另一个列具有以秒为单位的过程的持续时间,因此我可以使用DATEADD
将结束日期/时间回滚到开始日期/时间。
以下是声明全文:
CAST(CONVERT(VARCHAR(10), DATEADD(ss,-ConfTask.[LastExecutedDuration], ConfTask.[LastExecutedDate]), 103) + ' ' + '05:30' as DATETIME)
下面是我收到错误消息:
varchar数据类型为datetime数据类型的转换在出导致 范围值。
我试图测试这些语句来调查这个问题,但他们都对自己的运行OK:
CAST(CONVERT(VARCHAR(10), GETDATE(), 103) + ' ' + '05:30' as DATETIME)
CAST('2017-03-02' + ' ' + '05:30' as DATETIME)
DATEADD(ss,-ConfTask.[LastExecutedDuration], ConfTask.[LastExecutedDate])
我是一直困扰着如何解决这个问题。任何帮助将非常感激。
是否将'ConfTask。[LastExecutedDuration]'存储为'TIME','INT','NUMERIC()'值。 。? – 3BK
它存储为'Decimal(18,0)' –
这不可能与您转换为特定格式'(103)'的事实相关,对吧?因为在你的例子中,你将'GETDATE()'转换为'(103)',而不是'ConfTask。[LastExecutedDate]''。你是否试过用不同的日期格式运行它,比如'(101)',或者根本没有提供特定的格式? (希望不是一个愚蠢的问题......) – 3BK