3

私のPHP.iniファイルでは、TimeZoneを次のように設定しました...

'America/New_York'

だから私は単純なphp Date()関数を実行したとき

echo date("Y-m-d H:i:s");

「MY」システム時間に従って正しいdateTimeを取得します。これは、比較しているものであり、MySQLデータベースにも保存したいためです。(PHPから報告されているように)。

問題は、MySQL db を PDF 形式にエクスポートして、それがどのように見えるかを確認したところ、時間は 1 時間前でした。午前0時)


だから..私は考え始めました..私のPHPスクリプトはINSERT、私が必要とする正しいdateTimeをデータベースに入れます..しかし、私はアカウントに対して行っているdateTimeの比較がたくさんあります。

phpMyAdmin で MySQL クエリを実行すると、間違ったdateTime が取得されます。

(phpMyAdmin SQL Query)で実行してみました

SET time_zone = 'America/New_York';
-and-
SET time_zone = '-05:00';

しかし、クエリを実行すると

SELECT @@global.time_zone, @@session.time_zone;

私は戻っSYSTEMSYSTEM.

(私は共有ホスティングを利用していることにも言及する必要があります)

クエリでMySQLNOW()関数を使用すると、db に入力された時間が MySQL によって計算され、独自の timezone に従って計算されます。

このような..

mysql_query("INSERT INTO table (id, value, time_created) 
                        VALUES ('{$id}', '{$value}', NOW())");

時間を正しく保つために、PHPですべてのINSERTINGと比較を行う必要があることを理解しています..しかし、上記では、間違った時間が挿入されます。

これは私のジレンマです...

しかし、これは私が予見していない何かに影響を与えますか? どういうわけか、これが私の時間に影響を与えるような気がします。

では、どうすればこれを回避したり、同じタイムゾーンで MySQL を取得したりできますか? 1時間遅れではなく、すべての日付/時刻が正しいことを確認してください..

4

2 に答える 2

1

PhpMyAdmin を介して連続して実行された 2 つのクエリは、2 つの別々のセッション (接続) で実行されるため、SELECT @@session.time_zone単独では常に "SYSTEM" が返されます。

共有サーバーのグローバル タイム ゾーンを変更できるとは思えません (変更できないことを願っています) SELECT @@global.time_zone。一方、セッションのタイムゾーンを変更できるはずです。

これら 2 つのクエリを 1 回の実行で実行してみてください。新しいタイム ゾーンが表示されるはずです。

SET time_zone = '-05:00'; SELECT @@session.time_zone; -- same session

NOW()現在のセッションのタイム ゾーンで時間を返すため、タイム ゾーンは重要です。ただし、時間を GMT タイム ゾーンで保存したいのですが、それは好みの問題だと思います。

于 2013-08-22T12:29:17.960 に答える