SQL Server - 将分钟转换为今天的日期

时间:2015-07-01 08:25:08

标签: sql-server sql-server-2012

我在互联网上看到过很多关于类似问题的例子,但我没想到要做的事情。

我的情景

我有一个表以十分钟(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时为空的字段

如果有重复的问题,谢谢你的帮助和道歉......

1 个答案:

答案 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