При сохранении значений TIME
в базе данных MySQL наш сервер автоматически преобразует эти даты в формат UTC, из-за этого мы сохранили смещение часового пояса пользователя в нашей базе данных. Учитывая, что у нас была простая база данных, состоящая из трех полей, как мы будем собирать время в пределах выделенного минутного диапазона с соответствующим часом.Найти все поля TIME между 15-29 минутами с часом, связанным с часовым поясом
id | offset | alertTime
---|--------|----------
1 | 360 | 4:22:38
2 | 420 | 3:28:41
В этой таблице, пользователь 1 имеет 6 час смещения (ДКБ) и пользователь 2 имеет 5 часов смещение и 7 часов смещения (МДТ) мне нужно найти оба этих пользователь (и любых других пользователей), которые находятся в пределах одного часа после вычисления часового пояса.
Преобразование в это время пользователя практически не изменилось, у обоих пользователей есть предупреждение, запланированное для 10PM 22Minuts до 10PM 28 минут, хотя в базу данных из-за UTC-преобразования вносятся разные времена.
Предположим, я хотел получить всех пользователей, у которых есть предупреждение, установленное для 10 вечера, между 10:16 и 10:29 КНТ, независимо от их часовой пояс.
Чтобы уточнить, пользователь, установивший alertTime в своем часовом поясе, должен быть возвращен, если их часовой пояс преобразуется в 10:16 - 10:29 CST. Таким образом, 9: 16-9: 29 MDT также будет возвращен в этих результатах.
Надеюсь, что это не было слишком запутанным.
-
Я использую MariaDB через NodeJS, если это имеет значение.
DATETIME сохраняет дату, что является необходимым. Мне нужно ВРЕМЯ только, так как это предупреждение нужно отправлять раз в день. (Подумайте о тревоге). Смещение необходимо, так как сервер не всегда будет находиться в том же часовом поясе, что и пользователь. – Hobbyist
Если вы делаете «будильник» с «СОБЫТИЙ», все это не имеет значения. –
Не могли бы вы рассказать о событии? Время хранится на сервере с 15-минутными интервалами, у меня есть сервер NodeJS, который выполняет запрос каждые 15 минут. – Hobbyist