У меня есть столбец типа datetime. Часть времени datetime - 00: 00: 00.000 для всех записей. Как я могу обновить все записи, чтобы установить время 17: 59: 59.000 без изменения части, содержащей дату?
Заранее спасибо
INSERT INTO table(datetimefield, ....) VALUES ('2019-10-03 00:00:00', ...); UPDATE table SET datetimefield = DATETIMEFROMPARTS(YEAR(datetimefield), MONTH(datetimefield), DAY(datetimefield), 17, 59, 59, 0)
Вы можете подать DATEADD три раза.
DATEADD
DECLARE @myDate DateTime = '2019-01-09' SELECT @myDate SELECT @myDate = DATEADD(SECOND, 59, DATEADD(MINUTE, 59, DATEADD(HOUR, 17, @myDate))) SELECT @myDate
Это дает
2019-01-09 00: 00: 00.000 2019-01-09 17: 59: 59.000
2019-01-09 00: 00: 00.000
2019-01-09 17: 59: 59.000
обновить, где вы получили время 00: 00: 00.000
create table t ( d datetime); insert into t values('2019-10-01 00:00:00.000') insert into t values('2019-10-01 00:00:00.000') update t1 set d= d+ cast('17:59:59.000' as datetime) from t t1 where cast( d as time)='00:00:00.000'
демо
Вы можете использовать DATEADD()
DATEADD()
UPDATE YourTable SET datecolumn = DATEADD(SECOND, 59, DATEADD(HOUR,17,DATEADD(MINUTE,59,datecolumn))) WHERE ID=10000
заменить ID, YourTable и DateColumn на имена таблиц / столбцов
ID
YourTable
DateColumn