2016-07-11 2 views
0

MYSQL databaseINSERT_DATE이라는 열이 있으며 datetime 유형이고 기본값이 CURRENT_TIMESTAMP 인 테이블 myTable이 있습니다.MYSQL 데이터베이스에서 시간대를 변경하는 방법은 무엇입니까?

삽입 문을 작성하는 동안이 열은 시스템에서 현재 시간을 자동으로 선택합니다.

내 로컬 호스트에서 아주 잘 작동합니다. 하지만 다른 웹 사이트를 다른 시간대에 배치 한 서버에 호스팅했을 때 그 시간대의 시간을 잘못 선택했습니다. 시간대를 GMT + 5:30('Asia/Kolkata')으로 설정하고 싶습니다. MYSQL에서 어떻게이 작업을 수행 할 수 있습니까?

데이터베이스에 연결하는 동안 시간대를 변경하려고하지만 작동하지 않습니다. 다음은 내 코드입니다 : 단지 MySQL을 연결 한 후,

function connect_database() 
{ 
    $con = mysqli_connect("servername", "username", "password", "dbname"); 
    if (!$con) 
    { 
     $con = ""; 
     echo("Database connection failed: " . mysqli_connect_error()); 
    } 
    mysqli_query($con, "SET SESSION time_zone = 'Asia/Kolkata'"); 
    return $con; 
} 
+0

cPanel에서 기본 시간대를 '아시아/콜카타'로 변경하십시오. –

+0

@MathsRkBala - 내 cpanel의 시간대를 변경하려면 호스팅 제공 업체에게 티켓을 발급해야합니까? –

답변

2

스크립트의 시작 부분에서,이 쿼리를 실행합니다

SET SESSION time_zone = 'Asia/Kolkata'; 

문서 : 오류가 발생하는 경우 MySQL Server Time Zone Support

을 실행 검색어 :

ERROR 1298 (HY000): Unknown or incorrect time zone: 'Asia/Kolkata' 

다음은 시간대 데이터가 낮음을 의미합니다. 귀하의 MySQL 서버에 aded. 당신은 장 Populating the Time Zone Tables에 주어진 설명을 따라 그렇게 할 수 있습니다 또는 당신은 숫자 값 대신라는 이름의 시간대를 사용하려고 할 수 있습니다 : 세션 범위

set time_zone = "+5:30" 

글로벌 범위에 대한

SET SESSION time_zone = "+5:30"; 
+0

당신의 솔루션을 시도했지만 작동하지 않습니다. 나는 내 질문을 업데이트했다. –

+0

작동하지 않는 기능은 무엇입니까? 너 정확히 뭐야? 내 데이터베이스에 동일한 코드를 사용하고 잘 작동합니다. – Jocelyn

+0

여전히 서버 서버 시간대를 지정합니다. –

2

set global time_zone = "+5:30" 

전역 시스템 변수를 변경하면 값이 기억되고 새 공동에 이 사용됩니다 서버가 다시 시작될 때까지 글로벌 시스템 변수를 영구적으로 설정하려면 파일 옵션으로 설정해야합니다. 변경 사항은 해당 글로벌 변수에 액세스하는 모든 클라이언트가 볼 수 있습니다. 그러나 변경 사항은 변경된 후에 연결하는 클라이언트에 대해서만 해당 세션 변수에 영향을줍니다. 변수 변경은 현재 연결된 클라이언트 (SET GLOBAL 문 )의 세션 변수에 영향을 미치지 않습니다.

관련 문제