1

私は現在いくつかの共有ホスティングを使用しており、php sqlクエリを使用するか、NOW()またはCURRENT_TIMESTAMPphp sqlクエリで、挿入されたデータが7時間遅れています。

これを修正するためにPHPでできることはありますか?

私が試してみました

date_default_timezone_set('Europe/Dublin');

しかし、それは違いを生むようには見えませんでした。

出力:

php time: 1347544854 
date: 2012-09-13 14:0054 UTC 
mysql array(3) { 
["zone"]=> string(6) "SYSTEM" 
["utcts"]=> string(19) "2012-09-13 14:00:54" 
["now"]=> string(19) "2012-09-13 07:00:54" 
}
4

3 に答える 3

2

MySQLのタイムゾーンはPHPのタイムゾーンとは異なります。

これがMySQLタイムゾーンリファレンスで、設定方法を示しています。

怠惰な人のために:

mysql> SET time_zone = timezone;
于 2012-09-13T13:35:38.223 に答える
1

mysql関数を使用する場合、MySQLで設定されたタイムゾーンを使用します。クエリでこれを使用して、タイムゾーンを変更できます。

SET time_zone = 'Europe/Dublin'
于 2012-09-13T13:35:32.810 に答える
1

-答えではありませんが、コメントするには長すぎます-
試してみてください(mysql接続の正しいクレデンシャルを使用して)

<?php
echo "php\n";
echo 'time: ', time(), "\n";
echo 'date: ', date('Y-m-d H:is T', time()), "\n";

echo "mysql\n";
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'localonly', 'localonly');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
foreach( $pdo->query('SELECT @@time_zone as zone, UTC_TIMESTAMP() as utcts, Now() as now', PDO::FETCH_ASSOC) as $row ) {
    foreach( $row as $k=>$v) {
        echo $k, '=', $v, "\n";
    }
}

出力は次のようになります

php
time: 1347543592
date: 2012-09-13 15:3952 CEST
mysql
zone=SYSTEM
utcts=2012-09-13 13:39:53
now=2012-09-13 15:39:53

マシンの出力を元の質問に追加してください...

于 2012-09-13T13:40:53.127 に答える