Как установить значение по умолчанию для столбца datetime в MYSQL? - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть веб-приложение, которое регистрирует некоторые события (не важно, что).Мой веб-сервер находится в другом часовом поясе, я хочу записать дату и время моего часового пояса.

Я создал простую таблицу БД с полями: ID - BIGINT (автоинкремент), primary key WH - DATETIME (это проблематично) LOG_TEXT VARCHAR(255) (текст события)

полеWH - проблема, я могу установить только CURRENT_TIMESTAMP, но показывать на 6 часов меньше моего текущего часового пояса.

Поэтому я попытался установить значение по умолчанию для поля WH (в phpMyAdmin), с помощью следующего:CONVERT_TZ(WH,@@global.time_zone,'+01:00')

phpMyAdmin показывает мне следующую ошибку:

#1067 - invalid default value for 'WH'

любая помощь, как установить другой часовой пояс для CURRENT_TIMESTAMP?

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

заранее благодарен за ваши ценные комментарии.

Ответы [ 3 ]

0 голосов
/ 01 апреля 2019

Вы можете создать TRIGGER перед вставкой для обновления даты и времени

0 голосов
/ 01 апреля 2019

Итак, вот как я решил свою проблему:

  • Создано представление с теми же полями, но поле WH было увеличено на 6 часов. Я знаю, что это не лучший вариант, но все мои вещи обрабатываются в одном часовом поясе (UTC + 6)

Теперь в этом представлении хранятся правильные данные временной метки, однако исходная таблица LOG имеет системную временную метку часового пояса. Поле WH в таблице LOG имеет значение по умолчанию CURRENT_TIMESTAMP

Теперь я могу просматривать свои журналы, выбирая значения из V_LOG.

SQL:

CREATE ALGORITHM=UNDEFINED DEFINER=`myuser`@`localhost` SQL SECURITY DEFINER VIEW `V_LOG` 
AS 
SELECT ID, DATE_ADD(WH,interval 6 HOUR) AS WH,LOG_TEXT FROM LOG;

Мне не удалось использовать CONVERT_TZ с @@ global.time_zone, поскольку представления не могут содержать параметры.

0 голосов
/ 01 апреля 2019

В конфигурационном файле mysql (my.cnf) установите строку ниже и перезапустите mysql

default-time-zone='+01:00'

Или войдите в mysql с правами root и введите запрос ниже

SET GLOBAL time_zone = '+1:00';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...