我的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;
}
答案 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语句)。