MySql - Поиск "сегодня" и "вчера" при использовании CONVERT_TZ

Я изо всех сил пытаюсь получить правильное определение "сегодня" и "вчера" при использовании CONVERT_TZ() в MySql. Мои даты хранятся в UTC, и мне нужно запросить даты, выходящие в часовом поясе MST, так что примерно так получается правильное время начала дня:

select DATE_FORMAT(convert_tz(utc_timestamp(),'+00:00','-07:00'), '%m/%d/%Y 00:00:00')

Однако, когда я помещаю это в запрос, это, кажется, не работает.

Этот запрос правильно выводит последние 24 часа, но не "сегодня" (т.е. время с полуночи до настоящего времени).

SELECT * FROM tablename 
WHERE CONVERT_TZ(insertdate,'+00:00','-07:00') >= convert_tz(DATE_SUB(utc_timestamp(), INTERVAL 1 DAY),'+00:00','-07:00')

Затем в аналогичной форме это создает запрос, который выполняется за 24 часа до 24 часов назад, но не является "вчера" (то есть вчера с 00:00:00 до 23:59:59 вчерашней даты в часовом поясе MST).

select * from tablename  
AND  CONVERT_TZ(insertdate,'+00:00','-07:00') >= convert_tz(DATE_SUB(utc_timestamp(), INTERVAL 2 DAY),'+00:00','-07:00')
AND  CONVERT_TZ(insertdate,'+00:00','-07:00') <= convert_tz(DATE_SUB(utc_timestamp(), INTERVAL 1 DAY),'+00:00','-07:00')

1 ответ

Решение

Вам необходимо отформатировать дату с помощью функции date_format и установить время, когда запрос "00:00:00" на сегодня SELECT * FROM tablename WHERE CONVERT_TZ(insertdate,'+00:00','-07:00') >= date_format(convert_tz(utc_timestamp(),'+00:00','-07:00'), '%y-%m-%d 00:00:00');

Вчера: SELECT * FROM tablename WHERE CONVERT_TZ(insertdate,'+00:00','-07:00') между date_format(convert_tz(date_sub(utc_timestamp(), интервал 1 день), '+ 00:00', '- 07:00 '),'% y-% m-% d 00:00:00 ') и date_format(convert_tz(date_sub(utc_timestamp(), интервал 1 день),'+00:00','-07:00'), '%y-%m-%d 23:59:59');

Другие вопросы по тегам