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

Php 如何更改MYSQL数据库中的时区?,php,mysql,Php,Mysql,我的MYSQL数据库中有一个表myTable,其中有一个名为INSERT\u DATE的列,它是datetime类型,默认值为CURRENT\u TIMESTAMP 在生成insert语句时,此列会自动从我的系统中选取当前时间 这在我的本地主机上运行得非常好。但当我把我的网站放在另一个不同时区的服务器上时,它从那个时区选择的时间是错误的。我想将时区设置为GMT+5:30('Asia/Kolkata')。如何在MYSQL中实现这一点 我试图在连接到数据库时更改时区,但它不起作用。下面是我的代码:

我的
MYSQL数据库中有一个表
myTable
,其中有一个名为
INSERT\u DATE
的列,它是
datetime
类型,默认值为
CURRENT\u TIMESTAMP

在生成insert语句时,此列会自动从我的系统中选取当前时间

这在我的本地主机上运行得非常好。但当我把我的网站放在另一个不同时区的服务器上时,它从那个时区选择的时间是错误的。我想将时区设置为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';
文件:

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

ERROR 1298 (HY000): Unknown or incorrect time zone: 'Asia/Kolkata'
这意味着时区数据没有加载到MySQL服务器中。您可以按照本章中给出的说明进行操作,也可以尝试使用数值代替指定时区:

SET SESSION time_zone = "+5:30";

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

SET SESSION time_zone = 'Asia/Kolkata';
文件:

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

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全局语句)

对于会话范围

set time_zone = "+5:30"
全球范围

set global time_zone = "+5:30"
如果更改全局系统变量,则会记住并删除该值 用于新连接,直到服务器重新启动。(作出全球性的决定) 系统变量设置为永久,应在选项中设置 任何访问该全局文件的客户端都可以看到该更改 变量但是,更改会影响相应的会话 变量仅适用于更改后连接的客户端。全球 变量更改不会影响任何客户端的会话变量 当前已连接的(甚至不是发出 SET全局语句)


在您的cPanel中将默认时区更改为“亚洲/加尔各答”。@MathsRkBala-我是否需要向主机提供商提交票证才能更改我的cPanel的时区?在您的cPanel中将默认时区更改为“亚洲/加尔各答”。@MathsRkBala-我是否需要向主机提供商提交票证才能更改我的cPanel的时区?我尝试了您的方法解决方案,但它不起作用。我已经更新了我的问题。什么不起作用?你到底得到了什么?我对我的数据库使用了相同的代码,它工作得很好。它仍然选择服务器时区。我建议您在使用
mysqli\u query
执行查询后,更改PHP代码以检查mysql错误:在行的末尾添加
或死亡(mysqli\u error($con))
。我把时区放错了。它与“+5:30”一起工作。非常感谢您的帮助:)我尝试了您的解决方案,但不起作用。我已经更新了我的问题。什么不起作用?你到底得到了什么?我对我的数据库使用了相同的代码,它工作得很好。它仍然选择服务器时区。我建议您在使用
mysqli\u query
执行查询后,更改PHP代码以检查mysql错误:在行的末尾添加
或死亡(mysqli\u error($con))
。我把时区放错了。它与“+5:30”一起工作。非常感谢您的帮助:)