В приложении, которое я разрабатываю, каждый раз, когда пользователь нажимает на определенную ссылку, которую я регистрирую, она щелкает в базе данных с отметкой времени. Часовой пояс сервера UT C. У меня есть раздел отчета, где я могу запросить базу данных для разных интервалов дат (сегодня, вчера, на этой неделе, последние 7 дней, год до даты и т. Д. c.), А также у меня есть возможность выбрать часовой пояс.
Теперь наступает интересная часть - когда я выбираю часовой пояс, отличный от UT C, скажем, America / New_York, я получаю разные значения для «сегодня» и для того же дня в интервале дат. Например, если я запрашиваю «2020-03-02», я получаю 200 просмотров. Если я запрашиваю «2020-03-01 - 2020-03-08», я получаю 179 обращений к «2020-03-02».
Я думаю, я знаю, откуда это исходит, но непоследовательность сводит меня с ума.
Я полагаю, что это связано с тем, что, когда я выбираю часовой пояс, я получаю смещение X часов. Например, для Америки / New_York у меня смещение +5 часов, поэтому «2020-03-02 00:02:01» UT C становится «2020-03-01 19:02:01» для Америки / New_York
В SQL Я использую функцию CONVERT_TZ () при запросах, например:
SELECT h.id, h.income, h.created, u.email, u.referer
FROM hits h
LEFT JOIN users u ON u.id = h.id
WHERE CONVERT_TZ(h.created, 'UTC', 'America/New_York') BETWEEN '2020-03-02 00:00:00' AND '2020-03-02 23:59:59' -- single day
ORDER BY h.income DESC
SELECT h.id, h.income, h.created, u.email, u.referer
FROM hits h
LEFT JOIN users u ON u.id = h.id
WHERE CONVERT_TZ(h.created, 'UTC', 'America/New_York') BETWEEN '2020-03-001 00:00:00' AND '2020-03-07 23:59:59' -- custom period
ORDER BY h.income DESC
Таким образом, возможно ли иметь одинаковое количество обращений к одной и той же дате при запросе часового пояса кроме UT C? В основном, если «сегодня» означает «2020-03-02» и имеет 200 обращений, я хочу видеть то же число при запросе «2020-03-01 - 2020-03-08».