MySql - Поиск «сегодня» и «вчера» при использовании CONVERT_TZ - PullRequest
0 голосов
/ 06 декабря 2018

Я изо всех сил пытаюсь получить правильное определение «сегодня» и «вчера» при использовании 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 Ответ

0 голосов
/ 06 декабря 2018

Вам необходимо отформатировать дату с помощью функции 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');

...