mysqli php中的now()函数

时间:2015-12-31 08:20:40

标签: php mysql mysqli

我在插入/更新表时使用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') 函数。

4 个答案:

答案 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')