1

アクティビティ エントリを MySQL テーブルに保存しています。テーブルにはタイムスタンプ タイプの date_created フィールドがあり、PHP を使用して、GMT に基づいてアクティビティ エントリを挿入します。

$timestamp = gmdate("Y-m-d H:i:s", time());

これはうまくいきます。私のクライアントでは、GMT+2 を使用しています。ここで 16:00 にエントリを挿入すると、MySQL に 14:00 として保存されます。これは予想通りだと思います。じぶんの

ここで、過去 1 時間以内に MySQL からアクティビティ エントリの数を取得したいと考えています。次のクエリを使用しています。

SELECT COUNT(id) as cnt FROM karmalog WHERE user_id = ' 89' AND event='IMG_UPD' 
AND date_created > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 1 HOUR)

CURRENT_TIMESTAMP は、GMT+2 に設定された SYSTEM に設定された MySQL タイムゾーン設定を使用するため、これは何も返しません。私が探しているのは MySQL の GMT_CURRENTTIMESTAMP だと思いますが、そのようなものはありますか?

4

1 に答える 1

2

コンテキスト依存の方法で現在の UTC タイムスタンプを返すUTC_TIMESTAMP()関数があります。代わりにそれを使用できますCURRENT_TIMESTAMP

SELECT COUNT(id) as cnt FROM karmalog WHERE user_id = ' 89' AND event='IMG_UPD' 
AND date_created > DATE_SUB(UTC_TIMESTAMP(), INTERVAL 1 HOUR);
于 2010-04-16T15:42:57.580 に答える