我正在使用PHP和MySQL。我有以下插入查询,工作正常。
$query="INSERT INTO mytable (user_id, user_datetime) VALUES ".
"(".$_SESSION["user_id"].", NOW());";
问题是:
1)当我在我的localhost上测试时,NOW()正在从我的系统中选择日期和时间。那很好,没问题!!!
2)现在我已将我的网站托管到加拿大任何地方的网络托管服务器,我在印度。现在,如果发生任何插入,它将存储加拿大而不是印度的时间。这就是问题。我怎么能摆脱这个。如何在我的数据库中保存印度时间?
答案 0 :(得分:3)
您有两种解决方案:使用PHP方法或MySQL方法。 (您的问题标题具有误导性,它不是PHP NOW()
而是MySQL NOW()
。)
使用PHP,您可以使用date_default_timezone_set
功能。
它将为您的PHP脚本设置默认时区。
请记住将它放在顶部附近,以便适用于您正在做的事情。
但是这将设置所有PHP函数的时区,而不是MySQL数据库NOW()
命令。
要修改MySQL的时区,您必须使用SET time_zone = timezonename;
。请参阅this SO thread for setting MySQL timezone或official documentation。
示例:
<?php
date_default_timezone_set('Asia/Calcutta');
$query = "INSERT INTO mytable (user_id, user_datetime) VALUES ".
"(".$_SESSION["user_id"].", ".date('Y-m-d H:i:s').");";
// OR
$query = "SET time_zone = 'Asia/Calcutta';"; // this will persist only for the current connection
$query .= "INSERT INTO mytable (user_id, user_datetime) VALUES ".
"(".$_SESSION["user_id"].", NOW());";