2016-07-11 14 views
0

MYSQL databaseINSERT_DATEというdatetimeタイプのカラムがあり、デフォルト値がCURRENT_TIMESTAMPであるテーブルmyTableがあります。MYSQLデータベースのタイムゾーンを変更するには?

このステートメントは、挿入文を作成するときに、システムから現在の時刻を自動的に選択します。

これはローカルホスト上で非常にうまく動作しています。しかし、私はいくつかの異なるタイムゾーンにある別の場所に配置されたサーバーに自分のウェブサイトをホストしたとき、そのタイムゾーンからのピッキング時間は間違っています。タイムゾーンをGMT + 5:30('Asia/Kolkata')に設定します。 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でデフォルトのタイムゾーンを 'Asia/Kolkata'に変更します。 –

+0

@MathsRkBala - cpanelのタイムゾーンを変更するには、ホスティングプロバイダにチケットを発行する必要がありますか? –

答えて

2

スクリプトの開始時に、ちょうどMySQLへの接続後、このクエリを実行します。

SET SESSION time_zone = 'Asia/Kolkata'; 

ドキュメント:MySQL Server Time Zone Support

実行するときにエラーが出た場合クエリ:

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

これは、タイムゾーンデータがローではないことを意味しますあなたのMySQLサーバーに追加されています。あなたの章Populating the Time Zone Tablesで与えられた説明に従うことによってそれを行うか、数値の代わりに、名前のタイムゾーンを使用してみてください可能性があります

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

私はあなたのソリューションを試しましたが、それは動作しません。私は私の質問を更新しました。 –

+0

何が問題なのですか?何を正確に得ますか?私は自分のデータベースに同じコードを使用し、正常に動作します。 – Jocelyn

+0

まだピッキングサーバーのタイムゾーンです。 –

2

セッションスコープのため

set time_zone = "+5:30" 

グローバルスコープ

set global time_zone = "+5:30" 

グローバルシステム変数を変更した場合、値は記憶され、新しい共同体には​​ が使用されますサーバーが再始動するまで接続しないでください。グローバル システム変数を永続的に設定するには、オプションの ファイルに設定する必要があります。変更は、そのグローバル 変数にアクセスするすべてのクライアントに表示されます。ただし、変更は、変更後に接続するクライアントの場合にのみ、対応するセッション 変数に影響します。グローバル変数 変数の変更は、現在接続されているクライアント のセッション変数には影響しません( SET GLOBALステートメントを発行するクライアントのものでさえも)。

関連する問題