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

时间:2016-07-11 07:24:45

标签: php mysql

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

在制作插入语句时,此列会自动从系统中选择当前时间。

这在我的localhost上工作得非常好。但是,当我将我的网站托管到位于某个不同时区的其他地方的服务器时,它从该时区的选择时间是错误的。我想将时区设置为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;
} 

2 个答案:

答案 0 :(得分:3)

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

SET SESSION time_zone = 'Asia/Kolkata';

文档:MySQL Server Time Zone Support

如果执行查询时出错:

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

则表示时区数据未加载到MySQL服务器中。您可以按照章节Populating the Time Zone Tables中给出的解释执行此操作,或者您可以尝试使用数值而不是命名时区:

SET SESSION time_zone = "+5:30";

答案 1 :(得分:2)

会议范围

set time_zone = "+5:30"

全球范围

set global time_zone = "+5:30"
  

如果更改全局系统变量,则会记住该值   用于新连接,直到服务器重新启动。 (做一个全球性的   系统变量设置为永久性,您应该在一个选项中设置它   file。)访问该全局的任何客户端都可以看到更改   变量。但是,更改会影响相应的会话   变量仅适用于更改后连接的客户端。全球   变量更改不会影响任何客户端的会话变量   目前已连接(甚至不是发布的客户端)   SET GLOBAL语句)。