2015-12-31 2 views
0

Я использую now() для ввода текущего времени в базу данных при вставке/обновлении таблицы. Код работает нормально, но есть только одна проблема, дата, введенная php, не находится в индийское время. Я думаю, что он принимает время UTC по умолчанию.now() function in mysqli 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/ru/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

Вы можете использовать DATE_ADD функцию MySQL, чтобы добавить 5 часов 30 минут текущего времени 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) 

Или постоянно в вашем 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) 
+0

Релевантно, и я думаю, источник для большей части ответа: https: // dev.mysql.com/doc/refman/5.5/en/time-zone-support.html – Lumbendil