У меня есть приложение Perl Catalyst, которое несколько раз хранится в базе данных MySQL. Время имеет тип TIMESTAMP и инициализируется с помощью команды NOW().Настройка часового пояса MySQL во время выполнения с Perl DBIx
При чтении времени они отображаются в часовом поясе баз данных по умолчанию. Однако при использовании оболочки mysql я могу легко установить часовой пояс на SET time_zone = '+03: 00'; и получите точное местное время для моего часового пояса.
Есть ли способ установить время, подобное этому в Catalyst или DBIx во время выполнения?
Я хочу иметь возможность поддерживать различные часовые пояса для разных пользователей, поэтому просто изменить часовой пояс по умолчанию для базы данных недостаточно. Я также знаю, что я могу отформатировать время в Perl после получения данных из MySQL, но так много автоматизации происходит с Catalyst, DBIx и Template Toolkit, поэтому правильно получить данные из базы данных для начала было бы так много более удобно.
Итак, вы хотите получить данные и сделать так, чтобы сама БД меняла значения, которые вы получаете, в зависимости от ваших параметров. Я думаю, что это не очень хорошая практика, может быть, вам стоит подумать о сохранении часового пояса вместе со временем и извлечении обоих полей или, возможно, получить дату diff, когда вы фактически суммируете настройку часового пояса на фактическую дату. – ChatterOne
Я понял, что у вас есть данные в вашей БД, и вы хотите представить их пользователю в локальном часовом поясе пользователя, который отличается для каждого отдельного пользователя. Это то, что должно быть сделано в представлении. Вы можете сделать DBIC конвертировать 'TIMESTAMP' в объекты DateTime и работать с ними. Возможно, вы вводите автоматический фильтр в свой класс View, который всегда применяется к ним, и обработчик DateTime обрабатывает преобразование. – simbabque
Да, в идеале я хотел бы установить часовые пояса и волшебным образом добавить поддержку локальных часовых поясов для моих пользователей. Если нет, я думаю, мне придется добавить функцию в результат или представление схемы. Дело не в том, что это так сложно сделать, но требует много изменений в большой и сложной кодовой базе. –