Как обновить часть времени в переменной datetime - PullRequest
0 голосов
/ 02 октября 2019

У меня есть столбец типа datetime. Часть времени datetime - 00: 00: 00.000 для всех записей. Как я могу обновить все записи, чтобы установить время 17: 59: 59.000 без изменения части, содержащей дату?

Заранее спасибо

Ответы [ 4 ]

2 голосов
/ 02 октября 2019
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)
2 голосов
/ 02 октября 2019

Вы можете подать 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

2 голосов
/ 02 октября 2019

обновить, где вы получили время 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'

демо

1 голос
/ 02 октября 2019

Вы можете использовать DATEADD()

UPDATE 
    YourTable 
SET 
    datecolumn = DATEADD(SECOND, 59, DATEADD(HOUR,17,DATEADD(MINUTE,59,datecolumn)))
WHERE 
    ID=10000

заменить ID, YourTable и DateColumn на имена таблиц / столбцов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...