2017-02-13 1 views
0

При сохранении значений 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, если это имеет значение.

ответ

-1

Не храните их в колонке TIMESTAMP; храните их как DATETIME. Таким образом, во время вставки и смещения нет смещения.

Если вам также нужен UTC, возможно, вам нужны два столбца, один из каждого типа?

+0

DATETIME сохраняет дату, что является необходимым. Мне нужно ВРЕМЯ только, так как это предупреждение нужно отправлять раз в день. (Подумайте о тревоге). Смещение необходимо, так как сервер не всегда будет находиться в том же часовом поясе, что и пользователь. – Hobbyist

+0

Если вы делаете «будильник» с «СОБЫТИЙ», все это не имеет значения. –

+0

Не могли бы вы рассказать о событии? Время хранится на сервере с 15-минутными интервалами, у меня есть сервер NodeJS, который выполняет запрос каждые 15 минут. – Hobbyist

Смежные вопросы