「displaytime」列を含む MySQL クエリを使用しています。タイムスタンプを UTC で保存します。ただし、タイムスタンプはローカル タイム ゾーンで表示する必要があります。 CONVERT_TZ() 関数が期待どおりに動作しません。
CONVERT_TZ() 関数を使用して UTC タイムスタンプをローカル タイム ゾーンに変換するには、両方のタイム ゾーンの略語を指定する必要があります。 UTC とローカルタイムゾーン。正しい構文は次のとおりです:
SELECT CONVERT_TZ(displaytime, 'UTC', 'LOCAL')
クエリの例
WHERE displaytime >= '2012-12-01 00:00:00' AND displaytime <= '2013-02-22 23:59:59' AND ct.organizationId IN ( SELECT t.organizationId FROM organization_ AS t JOIN organization_ AS p ON t.treePath LIKE CONCAT(p.treePath, '%') WHERE p.organizationId = 10707 )
変更されたクエリ:
WHERE CONVERT_TZ(displaytime, 'UTC', 'LOCAL') >= '2012-12-01 00:00:00' AND CONVERT_TZ(displaytime, 'UTC', 'LOCAL') <= '2013-02-22 23:59:59' AND ct.organizationId IN ( SELECT t.organizationId FROM organization_ AS t JOIN organization_ AS p ON t.treePath LIKE CONCAT(p.treePath, '%') WHERE p.organizationId = 10707 )
CONVERT_TZ() が機能しない場合は、タイムゾーンテーブルが欠落しているか空であることが原因である可能性があります。 mysql_tzinfo_to_sql プログラムを使用してタイムゾーン テーブルを初期化できます。
以上がMySQL SelectクエリでUTC日付をローカルタイムゾーンに変換する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。