Как выбрать дату и время, связанные с часовым поясом, в mysql для каждого пользователя (если у пользователя разные часовые пояса) - PullRequest
1 голос
/ 24 марта 2019

У меня есть система, где мне нужно планировать сообщения.У каждого пользователя есть свой часовой пояс.У меня есть один сервер и часовой пояс сервера установлен на EET.Таблицы базы данных:

messages:
  id int not null,
  user_id int,
  schedule DATETIME DEFAULT NULL

user:
   id
   name
   timezone: string (php compatible timezone string e.g. Europe/Paris, Europe/Budapest, etc)

Поэтому я хочу создать задание cron, каждую минуту проверять базу данных и проверять, есть ли какие-либо сообщения, которые мне нужно отправить.Но здесь я застрял с этими часовыми поясами.

Я храню DateTime со смещением часового пояса, например:

new \DateTime('2019-01-01 01:01:01', new \DateTimeZone('Europe/Paris'));

Так что теперь у меня есть проблема: я могу 'Я не использую такой запрос, потому что часовой пояс не проверен.

SELECT * FROM messages as m 
JOIN user as u 
ON u.id = m.user_id
WHERE m.schedule <= NOW() ORDER BY id DESC;

Поэтому мне нужно найти решение, как получать сообщения в соответствии с часовым поясом пользователя.Пример:

1st user timezone: `CET + 2`
2nd user timezone: `CET + 3`
server time: `CET + 5`
I need to get messages according to each users DateTime + timezone.

Возможно, сохраните его в UTC и сравните на стороне php, но я думаю, что может быть лучшее решение.

еще одно решение - SELECT DISTINCT timezone from user

, а затем выберите сообщения в соответствии с каждым часовым поясом отдельно.

...