仅从sql中的Datetime字段更新时间

omk*_*ade 25 sql sql-server-2008

我的日期是2013-12-14 05:00:00.000.

现在我想只更新那个日期的时间.EG至2013-12-14 04:00:00.000

是否有任何查询仅从datetime字段更新时间?

Yur*_*kiy 48

UPDATE MyTable 
SET MyDate = DATEADD(HOUR, 4, CAST(CAST(MyDate AS DATE) AS DATETIME)) 
Run Code Online (Sandbox Code Playgroud)

或这个

UPDATE MyTable 
SET MyDate = DATEADD(HOUR, 4, CAST(FLOOR(CAST(MyDate AS FLOAT)) AS DATETIME))
Run Code Online (Sandbox Code Playgroud)


小智 8

使用以下一个来更新datetime列的时间-

select  CONVERT(varchar(10),datecolumn, 120) + ' 12:34:56', 
        CONVERT(varchar(10),datecolumn, 120) + ' 00:00:00', 
        RSLV_LTR_INITIAL_DUE_DT, *
from twhere able1       
Run Code Online (Sandbox Code Playgroud)


Pra*_*nan 5

DECLARE @Time as TIME;
DECLARE @Date as DATETIME;

SELECT @Time = CONVERT(TIME, '2016-01-01 09:30:00.000');
SELECT @Date = CONVERT(date, GETDATE()); --2017-03-10 16:37:34.403

SELECT DATEADD(MINUTE, DATEPART(MINUTE, @Time), DATEADD(HH, DATEPART(HOUR, @Time), @Date))
Run Code Online (Sandbox Code Playgroud)

输出: 2017-03-10 09:30:00.000