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');