我在插入/更新表时使用from ..config import config
在数据库中插入当前日期时间。代码工作正常,但只有一个问题,php插入的日期时间不在印度时间。我认为它采用默认的UTC时间。
我用过
now()
但是尽管使用了默认的日期时间,我还有另一次......
请注意 -
我不能使用日期函数,因为我在其他地方使用相同的代码,我想要一个解决方案,而不更改date_default_timezone_set('Asia/Calcutta');
insert into emp_req (ereid,erdid,ersdate,erstime,eredate,eretime,ercid,erattach,ersub,ermess,erdate,ercats,erip) values ('$eid','$dept','$sdate','$stime','$edate','$etime','$geputcomp','$attach','$sub','$message',now(),'$cats','$ip_user')
函数。
答案 0 :(得分:2)
打开与MySQL的连接后,运行以下查询:
SET time_zone = timezone;
所有连接都将使用时区设置,直到连接未关闭。所以你应该在与数据库建立连接的地方设置它。这种方式可能你不需要在其他地方做出改变。
如果您拥有权限,也可以全局设置。
默认情况下,选项为“SYSTEM”,这是您的系统时区设置方式(可能是也可能不是UTC!):
mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM | SYSTEM |
+--------------------+---------------------+
1 row in set (0.00 sec)
mysql> SELECT CURRENT_TIMESTAMP();
+---------------------+
| CURRENT_TIMESTAMP() |
+---------------------+
| 2012-09-25 16:28:45 |
+---------------------+
1 row in set (0.00 sec)
您可以动态设置:
mysql> SET @@session.time_zone='+00:00';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM | +00:00 |
+--------------------+---------------------+
1 row in set (0.00 sec)
或永久在你的my.cnf:
[mysqld]
**other variables**
default_time_zone='+00:00'
重新启动服务器,您将看到更改:
mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| +00:00 | +00:00 |
+--------------------+---------------------+
1 row in set (0.00 sec)
mysql> SELECT CURRENT_TIMESTAMP();
+---------------------+
| CURRENT_TIMESTAMP() |
+---------------------+
| 2012-09-25 20:27:50 |
+---------------------+
1 row in set (0.01 sec)
答案 1 :(得分:1)
在mysql
中设置设置时区的查询SET GLOBAL time_zone = 'Asia/Calcutta';
答案 2 :(得分:0)
试试这个......
date_default_timezone_set('Asia/Kolkata');
$date = date("Y-m-d H:i:s");
insert into emp_req (ereid,erdid,ersdate,erstime,eredate,eretime,ercid,erattach,ersub,ermess,erdate,ercats,erip) values ('$eid','$dept','$sdate','$stime','$edate','$etime','$geputcomp','$attach','$sub','$message','$date','$cats','$ip_user')
答案 3 :(得分:0)
您可以使用MySQL的DATE_ADD
功能将当前UTC时间增加5小时30分钟,
DATE_ADD(NOW(), INTERVAL '05:30' HOUR_MINUTE)
所以你的查询应该是这样的,
INSERT INTO emp_req (ereid,erdid,ersdate,erstime,eredate,eretime,ercid,erattach,ersub,ermess,erdate,ercats,erip) VALUES('$eid','$dept','$sdate','$stime','$edate','$etime','$geputcomp','$attach','$sub','$message',DATE_ADD(NOW(), INTERVAL '05:30' HOUR_MINUTE),'$cats','$ip_user')