MYSQL выберите дату сейчас-1 день с ВРЕМЯ и между датами - PullRequest
0 голосов
/ 06 февраля 2020

Я хочу выбрать все строки между текущим днем-1 с указанным c временем 08:00 и до даты теперь также с указанным c временем. Это не работает, например, пример строки кода

WHERE SOME_DATE_COLUMN BETWEEN DATE_SUB(DATE(NOW() - INTERVAL 1 DAY) '08:00:00', '%Y-%m-%d %H:%i:%s') AND DATE_SUB(DATE(NOW()) '08:00:00', '%Y-%m-%d %H:%i:%s');

Я пробовал также DATE_FORMAT

WHERE SOME_DATE_COLUMN BETWEEN DATE_FORMAT(DATE(NOW() - INTERVAL 1 DAY) '08:00:00', '%Y-%m-%d %H:%i:%s') AND DATE_FORMAT(DATE(NOW()) '08:00:00', '%Y-%m-%d %H:%i:%s');

Если я запускаю sql сегодня, я хочу выбрать все записи между текущей датой минус 1 день с 08:00 до текущей даты 08:00

1 Ответ

1 голос
/ 06 февраля 2020

Я бы сделал:

where 
    some_date_column >= current_date - interval 16 hour
    and some_date_column < current_date + interval 8 hour

current_date дает вам текущую дату (без учета временной части). Затем вы можете добавить и вычесть необходимое количество часов.

Обратите внимание, что в этом запросе используется не between, а полуоткрытые интервалы. Если вам нужны согласованные соседние сегменты во времени, то вы хотите исключить одну из границ (по соглашению обычно исключается внешняя граница).

Демонстрация на DB Fiddle :

select current_date - interval 16 hour, current_date + interval 8 hour
current_date - interval 16 hour | current_date + interval 8 hour
:------------------------------ | :-----------------------------
2020-02-04 08:00:00             | 2020-02-05 08:00:00           
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...