我有一个Web应用程序,可以记录一些事件(不重要的是什么)。我的Web服务器位于不同的时区,我想记录我的时区的日期和时间。
我创建了带有字段的简单数据库表:
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:我在Google上搜索了很多,没有找到与该问题相匹配的答案 PPS:我无法更改服务器上的时区,它是共享主机,根本不可能。
提前感谢您的宝贵意见。
答案 0 :(得分:0)
在以下行中设置的mysql配置文件(my.cnf)中重新启动mysql
default-time-zone='+01:00'
或使用root登录mysql,然后在下面输入查询
SET GLOBAL time_zone = '+1:00';
答案 1 :(得分:0)
您可以在INSERT之前创建TRIGGER以更新日期和时间
答案 2 :(得分:0)
所以,这就是我解决问题的方式:
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一起使用,因为视图不能包含参数。