如何为 MYSQL 中的日期时间列设置默认值?

How to set default value for datetime column in MYSQL?

我有一个网络应用程序,用于记录一些事件(不重要的是什么)。我的网络服务器在不同的时区,我想记录我的时区的日期和时间。

我创建了简单的数据库 table,其中包含以下字段: 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: 我无法在我的服务器上更改时区,这是一个共享主机,根本不可能。

提前感谢您的宝贵意见。

在 mysql 配置文件 (my.cnf) 中设置以下行并重新启动 mysql

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

或使用 root 登录 mysql 并输入以下查询

SET GLOBAL time_zone = '+1:00';

您可以在 BEFORE INSERT 上创建 TRIGGER 以更新日期和时间

所以,这就是我解决问题的方法:

  • 创建了具有相同字段的视图,但字段 WH 增加了 6 小时。我知道这不是最好的选择,但我所有的东西都在同一时区 (UTC+6)
  • 中处理

现在此视图中存储了正确的时间戳数据,但是原始 LOG table 具有系统时区时间戳。 table LOG 中的字段 WH 具有默认值 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 一起使用,因为视图不能包含参数。