Я пытаюсь настроить базу данных, в которой хранится ежедневное время оповещения, указанное пользователями. Например, пользователь хочет получать оповещение, если какой-либо критерий выполняется каждый день с 7:00 до 7:30. В попытке реализовать это мне нужно учесть летнее время. Вот мое попытанное решение:
- Сохраните информацию о местном часовом поясе пользователей (в полной форме, например, "США/Восток") в одной таблице (например, userInfo), а время срабатывания будильника - в другой таблице (например, userAlarms).
- При запросе к таблице userAlarms конвертируйте время UTC в местное время пользователя, как указано в столбце tz, хранящемся в таблице
CONVERT_TZ(UTC_TIME(), 'UTC', userInfo.tz)
помощьюCONVERT_TZ(UTC_TIME(), 'UTC', userInfo.tz)
.
Вопрос 1. Насколько я понимаю, при указании названия часового пояса (например, в США и на востоке) необходимо учитывать переход на летнее время. Например, вызов CONVERT_TZ('00:00:00', 'UTC', 'US/EASTERN')
1 января должен дать "19: 00: 00", но 1 июля вызов должен привести к "20: 00: 00'. Я прав?
Вопрос 2. Если Q1 правильный, мне нужно постоянно обновлять таблицу часовых поясов MySQL, чтобы поддерживать смещения UTC часового пояса в актуальном состоянии?
Вопрос 3. Пример, приведенный в документации MySQL SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET')
выдает " NULL
" при запуске на моем сервере. Может ли это быть вызвано отсутствием настройки таблиц часовых поясов?
Как я могу это проверить?