繁体   English   中英

如何更改MYSQL数据库中的时区?

[英]How to change time zone in MYSQL database?

我的MYSQL database中有一个表myTable ,其中有一个名为INSERT_DATE的列,该列是datetime类型,其默认值为CURRENT_TIMESTAMP

进行插入语句时,此列自动从我的系统中选择当前时间。

这在我的本地主机上运行良好。 但是,当我将网站托管到位于其他时区的其他服务器上时,它从该时区中挑选时间是错误的。 我想将时区设置为GMT + 5:30 ('Asia/Kolkata') 如何在MYSQL实现呢?

我试图在连接数据库时更改时区,但无法正常工作。 下面是我的代码:

function connect_database()
{
    $con = mysqli_connect("servername", "username", "password", "dbname");
    if (!$con) 
    {
        $con = "";
        echo("Database connection failed: " . mysqli_connect_error());
    }
    mysqli_query($con, "SET SESSION time_zone = 'Asia/Kolkata'");
    return $con;
} 

在脚本的开头,在连接到MySQL之后,执行以下查询:

SET SESSION time_zone = 'Asia/Kolkata';

文档: MySQL服务器时区支持

如果执行查询时出现错误:

ERROR 1298 (HY000): Unknown or incorrect time zone: 'Asia/Kolkata'

则表示时区数据未加载到您的MySQL服务器中。 您可以按照“填充时区表 ”一章中的说明进行操作,也可以尝试使用数字值而不是命名的时区:

SET SESSION time_zone = "+5:30";

会话范围

set time_zone = "+5:30"

全球范围

set global time_zone = "+5:30"

如果更改全局系统变量,则该值将被记住并用于新连接,直到服务器重新启动。 (要使全局系统变量设置永久生效,您应该在选项文件中进行设置。)该更改对于访问该全局变量的所有客户端都是可见的。 但是,更改仅影响更改后连接的客户端的相应会话变量。 全局变量更改不会影响当前连接的任何客户端的会话变量(甚至不会发出SET GLOBAL语句的客户端的会话变量)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM