MySQL8.0使用CURRENT_TIMESTAMP查询到时间是12小时制,而不是24小时

问题描述

使用CURRENT_TIMESTAMP获取当前时间并设置默认值的时候,查询到时间是2024-04-22 01:46:16,而不是2024-04-22 13:46:16
如果是时区问题,一般都是相差8小时。而现在系统应该是按照12小时制,而不是24小时制。

检查时区

保险一点,也可以检查一下时区:
在MySQL中获取当前时区,你可以通过查询系统变量来实现:@@global.time_zone 和 @@session.time_zone。这两个变量分别表示全局时区设置和当前会话的时区设置。

SELECT @@global.time_zone, @@session.time_zone;
-- 查询结果可能会显示为 'SYSTEM',这意味着服务器或会话时区被设置为跟随系统的时区。如果时区被显式设置为其他值,这里会显示具体的时区名称,如 '+08:00' 表示东八区。

-- 如果你需要设置MySQL的时区,可以使用如下命令(示例为设置为UTC时区):
SET GLOBAL time_zone = '+00:00';  -- 设置全局时区
SET time_zone = '+00:00';         -- 设置当前会话时区

PS:如果确实是时区问题,下面可以不用看了。

解决

步骤1:进入MySQL服务器配置文件

找到MySQL服务器的配置文件,文件一般命名为my.cnf(linux系统)my.ini(Windows系统), 具体取决于你的操作系统和MySQL安装方式。
在Linux系统中,通常位于/etc/mysql/my.cnf或/etc/my.cnf。
在Windows系统中,通常位于C:\Program Files\MySQL\MySQL Server 8.0或者C:\ProgramData\MySQL\MySQL Server 8.0。

步骤2:找到时间格式设置

在配置文件中,找到时间格式设置的位置。
你可以使用搜索功能来查找关键字datetime_format或者time_format。这个设置通常在[mysqld]部分中,你需要在这个部分寻找。
没有也不要紧,自己加上就行

步骤3:修改时间格式为24小时制

在找到时间格式设置后,你需要将时间格式修改为24小时制。没有就自己加上datetime_format

# 时间格式设置为24小时制
datetime_format = %Y-%m-%d %H:%i:%s

步骤4:保存并重启MySQL服务器

完成步骤3后,保存配置文件重新启动MySQL服务器,以使更改生效。在Linux系统中,你可以使用以下命令重启MySQL服务器:

# 重启mysql服务
sudo systemctl restart mysql
# 查看mysql服务状态
service mysql status

在Windows系统中,在服务管理器中找到MySQL服务并重启它。