2015-12-31 85 views
0

我正在使用now()在插入/更新表格時在數據庫中插入當前日期時間。代碼工作正常,但只有一個問題,由php插入的日期時間不在印度時間。我認爲它採用默認的UTC時間。mysqli中的now()函數php

我用

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

但是,儘管使用默認的日期時間,我得到另一次......

請注意 - 我不能使用日期函數,因爲我在其他地方使用相同的代碼,我想要一個解決方案,而無需更改now()函數。

+0

什麼是數據庫erdate中的字段類型? – AnkiiG

+0

'now()'是一個mysql函數,使用它可以節省爲mysql服務器設置的時間。如果你想添加apache服務器時區,你可以使用''$ message','。date(「Ymd H:i:s」)。',' –

+0

檢查一下http://dev.mysql.com/doc /refman/5.5/en/date-and-time-functions.html#function_convert -tz –

回答

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') 
+2

請不要使用大寫字母,看起來好像在尖叫。 –

1

運行該查詢設置時區在MySQL

SET GLOBAL time_zone = 'Asia/Calcutta'; 
+0

服務器錯誤...... –

+0

請寄給我適當的錯誤,以便我可以幫到您 –

0

您可以使用MySQL的DATE_ADD功能,增加30分鐘5小時當前UTC時間,

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') 
1

在打開到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) 

[mysqld] 
**other variables** 
default_time_zone='+00:00' 

重新啓動服務器,你會看到的變化:在你的my.cnf

或永久

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) 
+0

與此相關,我猜想大部分答案的來源:https:// dev。mysql.com/doc/refman/5.5/en/time-zone-support.html – Lumbendil