sql получить конкретное время в дате - PullRequest
2 голосов
/ 01 февраля 2011

Я хочу написать запрос SQL, чтобы вернуть результаты с 9 вечера вчера до текущего времени. Насколько я знаю, GETDATE() даст мне только сегодняшние результаты, а GETDATE()-1 даст мне весь вчерашний день, чего я не хочу.

Как это можно сделать?

Ответы [ 3 ]

6 голосов
/ 01 февраля 2011
select * from tbl
where datecol between dateadd(hour,21,DATEDIFF(d,0,getdate()-1))
  and getdate()
0 голосов
/ 19 июля 2015

Попробуйте, это прекрасно работает в базе данных Sybase

выберите * из таблицы, где datecol> dateadd (день, -1, dateadd (час, 18, (преобразовать (datetime, преобразовать (date, getdate ())))))

Объяснение: (Внутри и снаружи)

  1. convert (date, getdate ()) - будет получена сегодняшняя дата с частью только даты, то есть 7/19/2015

  2. convert (datetime, convert (date, getdate ())) - текущая дата будет получена со временем 00:00, т. Е. 19.07.2015, 12:00:00

  3. dateadd (час, 21, (конвертировать (datetime, convert (date, getdate ()))) - это добавит часы к ранее полученному результату, то есть 19.07.2015 9:00:00 PM

  4. dateadd (день, -1, dateadd (час, 18, (преобразование (datetime, преобразование (date, getdate ())))))) - наконец, это будет минус один день для полученной даты, т.е. 18.07.2015 9:00:00

Вот, пожалуйста ...

0 голосов
/ 01 февраля 2011

Попробуйте с этим:

DATE_SUB(CURDATE(), INTERVAL 24-9 HOUR);

Это отнимает 24-9 часов до текущей даты, что эквивалентно вычитанию 1 дня и добавлению 9 часов.

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