SQL установил фиктивную дату сегодня в 5 утра - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть таблица, которая показывает дату, площадь и кол-во. Все даты нулевые, но я хочу установить фиктивную дату / время сегодня в 5 утра для всех значений в таблице. Я хочу, чтобы часть даты изменилась на сегодняшний день в зависимости от сегодняшней даты. Но я хочу, чтобы часовая часть всегда была в 5 часов утра.

Date Area Qty
Null A    1
Null B    3
Null C    2

Итак, сегодня, 5 ноября, в поле «Дата» каждой записи будет отображаться

2018-11-05 05:00:00.000 

Если запись все еще там завтра, 6 ноября, она изменится на

2018-11-06 05:00:00.000

Как мне этого добиться?

Ответы [ 4 ]

0 голосов
/ 05 ноября 2018

Вы можете преобразовать этот столбец в вычисляемый столбец (это то, что вы описываете в конце концов):

alter table myTable drop column [Date];
alter table myTable add [Date] as 
  cast(cast(getdate() as date) as datetime) + 
  cast('05:00 AM' as datetime);

Демоверсия DBFiddle

0 голосов
/ 05 ноября 2018

Просто

UPDATE YourTable
SET [Date] = (SELECT 
                   CAST(CAST(GetDate() AS DATE) AS DATETIME) + 
                   CAST('05:00:00' AS DATETIME)
             );

Если вам нужно делать это каждый день, вы можете запланировать задание , чтобы выполнять этот запрос каждый день.

0 голосов
/ 05 ноября 2018

Просто добавьте + 1 к существующей дате, и она будет увеличиваться на 1 день

UPDATE YourTable
SET [Date] = [Date] + 1
0 голосов
/ 05 ноября 2018

Вы можете использовать это просто, чтобы показать, или с заданием обновлять таблицу каждый день:

SELECT DATEADD(HH, 5, CONVERT(DATETIME, CONVERT(date, GETDATE())))
...