Выбор всех строк, которые находятся между вчерашней датой и сегодняшней датой и временем - PullRequest
0 голосов
/ 20 ноября 2019

Я пытаюсь выбрать все столбцы при определенных условиях. Это условие состоит в том, что даты должны быть между вчера в 17:30 и сегодня в 18:00. Мой единственный вопрос, как мне получить 5:30 вечера? Я понял, как получить 5 вечера, но как бы добавить минуты.

Вот запрос, который я использую на основе этого сообщения

SELECT * 
FROM tbl 
WHERE datelog BETWEEN dateadd(hour,17,datediff(day,1,GETDATE())) 
                  AND dateadd(hour,18,datediff(day,0,GETDATE()))

Ответы [ 2 ]

1 голос
/ 20 ноября 2019

Ваш текущий dateadd вернется вчера в 17:00. Просто добавьте 30 минут к этому dateadd, используя другой dateadd. Это будет выглядеть так: dateadd(minute, 30, [your current dateadd])

Используя ваш код:

dateadd(MINUTE, 30, dateadd(hour, 17, datediff(day, 1, GETDATE())))
0 голосов
/ 20 ноября 2019

Если вы используете SQL Server, я ожидаю:

where datelog >= dateadd(minute, 17*60+30, dateadd(hour, -24, convert(date, getdate()))) and
      datelog < dateadd(minute, 18*60, convert(date, getdate()))

datediff() не имеет смысла в этой конструкции.

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