Как я могу изменить время UTC базы данных MySQL для проекта Laravel?

#mysql #laravel #timezone #utc #timezone-offset

#mysql #laravel #Часовой пояс #utc #смещение часового пояса

Вопрос:

У меня есть проект Laravel с базой данных MySQL, установленной на часовой пояс UTC. Я хочу иметь возможность изменять время часового пояса UTC в БД на разные часовые пояса в зависимости от того, где находится клиент, получающий доступ к данным.

Я могу установить timezone параметр в config/app.php динамически на основе клиента, но это, похоже, не влияет на время, поступающее в БД, когда я использую save метод в методе Laravel (в основном, все возвращается к UTC).

Вероятно, есть несколько способов реализовать это, но после долгих поисков я не могу найти способ заставить время DB в UTC переключиться на выбранный мной часовой пояс.

Стоит отметить, что мой проект иногда использует модели Laravel для запросов, а иногда использует конструктор запросов из DB класса. Я не уверен, нужно ли обрабатывать их по-разному, но все равно я ищу решение, которое обрабатывает оба варианта использования. Спасибо.

Ответ №1:

Комментарии:

1. Спасибо за твой ответ, Чарльз, но в итоге я пошел другим путем (в основном потому, что понял, что неправильно понял проблему, когда задавал вопрос). Спасибо.

Ответ №2:

Чарльз, я ценю твой ответ, но в итоге я понял, что даты вводятся в базу данных правильно, но когда я сравнивал их с функцией MySQL NOW() , NOW() часть была тем, что мне нужно было преобразовать.

Таким образом, я закончил тем, что использовал CONVERT_TZ функцию следующим образом, чтобы получить то, что я хотел:

 CONVERT_TZ(NOW(), 'UTC', 'US/Eastern')
  

Третий параметр был сделан переменным, но вы поняли суть. Кроме того, это похоже на взлом, но пока это работает.