[英]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.