2014-04-18 2 views
1

저는 PHP와 MySQL을 사용하고 있습니다. 나는 잘 작동하는 삽입 쿼리를 다음과 같이했습니다.다른 시간대에 MYSQL NOW()를 처리하는 방법은 무엇입니까?

$query="INSERT INTO mytable (user_id, user_datetime) VALUES ". 
     "(".$_SESSION["user_id"].", NOW());"; 

문제는 :

1) 나는 지금 내 로컬 호스트에서 테스트되었다 (이) 내 시스템에서 날짜와 시간을 따기했다. 좋은, 아무 문제도 아니었다 !!!

2) 이제는 캐나다에있는 웹 호스팅 서버에 내 사이트를 호스팅했으며 인도에 있습니다. 이제 삽입물이 있으면 인도가 아닌 캐나다의 시간을 저장하고 있습니다. 이게 문제 야. 어떻게이 문제를 해결할 수 있습니까? 내 데이터베이스에 인도 시간을 저장하려면 어떻게해야합니까?

+1

http://stackoverflow.com/questions/930900/how-to-set-timezone-of-mysql –

답변

2

두 가지 솔루션이 있습니다. PHP 접근 방식 또는 MySQL 접근 방식을 사용하십시오. (귀하의 질문 제목은 오도 된 것이며, PHP NOW()이 아니라 MySQL NOW()입니다).

PHP를 사용하면 date_default_timezone_set 함수를 사용할 수 있습니다. PHP 스크립트의 기본 시간대를 설정합니다.

그냥 주변에 두는 것을 잊지 마세요.

BUT 이렇게하면 MySQL 데이터베이스 NOW() 명령이 아닌 모든 PHP 기능의 시간대가 설정됩니다.

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());"; 
+0

timezonename 문 세트 TIME_ZONE = timezonename 여기에 무엇;? –

+0

'SYSTEM'또는 '+10 : 00'또는 'Asia/Calcutta'와 같은 UTC 오프셋을 사용할 수 있습니다. – achedeuzot

+1

괜찮아. 알았어. 도와 주셔서 대단히 감사합니다 !!! –

관련 문제