Часть времени обновления datetime в SQL Server

#sql #sql-server-2008

#sql #sql-server-2008

Вопрос:

У меня есть переменная DateTime в SQL Server..У меня есть приведенный ниже код для проверки выходных, а затем вычитания дней, чтобы сделать это пятницей. Теперь я также хочу установить время этого нового Datetime как 5 часов вечера в пятницу. Может кто-нибудь, пожалуйста, сказать мне, как я могу этого добиться.

 if(DATENAME(DW, @EndDate) = 'Sunday')
Begin
Set @EndDate = (SELECT DATEADD(DAY, -2, @EndDate))
End
if(DATENAME(DW, @EndDate) = 'Saturday')
Begin
Set @EndDate = (SELECT DATEADD(DAY, -1, @EndDate))
End
End
  

Спасибо

Ответ №1:

Вы можете добавить 17 часов:

 Set @EndDate = DATEADD(HOUR, 17, DATEADD(DAY, -1, @EndDate))
  

Я понятия не имею, почему вы сформулировали эту логику с использованием подзапроса. В этом нет необходимости.

Если в ваших данных уже есть компонент time, сначала выполните приведение к date , чтобы избавиться от компонента time, а затем обратно к datetime :

 Set @EndDate = DATEADD(HOUR, 17, DATEADD(DAY, -1, CONVERT(datetime, CONVERT(DATE, @EndDate))))
  

Комментарии:

1. Спасибо, Гордон.. У меня есть дата в формате datetime ..выбираем DATEADD (ЧАС, 17, DATEADD (ДЕНЬ, -1, ’03/17/2019 12:08:08′)) ведет к 2019-03-17 05:08:08.000 Я искал 15.03.2019 17:00:00

2. Потрясающе.. Спасибо

Ответ №2:

выберите приведение (ПРЕОБРАЗОВАТЬ(varchar(12),GETDATE()) ’17:00′ в качестве datetime)