我在互联网上看到过很多关于类似问题的例子,但我没想到要做的事情。
我的情景
我有一个表以十分钟(1050)表示EndTime,表示17:30:00
我写了一个查询,当它的null为null时更新引用表中的列,但是日期本身设置为1900-01-01 17:30:00.000。无论我尝试什么,我只能得到日期正确或时间正确...继承人将查询转换为时间并显示错误的日期:
UPDATE t
SET t.EndTime = (
SELECT CONVERT (datetime, DATEADD(MINUTE, EndTime, '00:00:00'), 108)
FROM Staff
WHERE
StaffID = t.StaffID
)
FROM TimesheetLine t
WHERE t.EndTime IS NULL
我正在努力实现2015-01-07 17:30:00.000
Staff.EndTime是存储1050分钟的地方
TimesheetLine.EndTime是我试图设置为2015-01-07 17:30:00.000时为空的字段
如果有重复的问题,谢谢你的帮助和道歉......答案 0 :(得分:2)
如果您只想约会并添加17:30:00
,可以执行以下操作:
SELECT DATEADD(MINUTE, 1050, CONVERT(DATETIME, CONVERT(DATE, GETDATE())))
所以它需要一个给定的日期,在这个例子中我使用GETDATE()
来获取当前日期。我已将其转换为日期,然后返回到日期时间以剥离时间部分。然后使用DATEADD()
添加指定的分钟数。
<强>输出:强>
2015-07-01 17:30:00.000
因此,如果我正确地阅读您的查询,您将执行此操作:
UPDATE t
SET t.EndTime = (
SELECT DATEADD(MINUTE, EndTime, CONVERT(DATETIME, CONVERT(DATE, GETDATE())))
FROM Staff
WHERE StaffID = t.StaffID
)
FROM TimesheetLine t
WHERE t.EndTime IS NULL