2017-02-16 5 views
0

ユーザーのローカルタイムゾーンを考慮してselectステートメントを変更しようとしていますが、私の周りに自分の頭を囲むことができません。convert_tzを使用したMySQL Selectステートメント

ユーザーの現在の日付のレコードを選択するとします。この場合、4時間にハードコードされています。私が使用している現在

...

私は convert_tzを使用するために、そのステートメントを変更したい
SELECT * FROM {$this->burnsTable} WHERE DATE(created) = DATE(NOW() - INTERVAL 4 HOUR) 

、ということは可能ですか?

答えて

1

MySQLは、ユーザーのタイムゾーンについては何も知りません。 get itにはjavascriptが、には PHPが必要です。ただし、最良の方法は、ユーザーに選択を依頼することです。その場合、store their choice in the databaseを入力してから、のタイムゾーンを入力することができます。 convert_tzを使用することもできます(または、ADDTIME呼び出しに与えたオフセットを単純に設定することもできます)。あなたがtime zone stringsを使用してデータベースを設定している場合、あなたはそれらを保存し、convert_tzでそれらを使用するか、またはあなたはまだあなたがやってusersテーブルに参加することができます

SELECT * FROM {$this->burnsTable} WHERE DATE(CONVERT_TZ(created,'+00:00','+4:00')) = CURDATE(); 

ような何かを行うことによってオフセット付きconvert_tzを使用することができますすることができますこれは、潜在的に多くのクエリになるかもしれないことを行う代わりに、あなたのPHPユーザモデルにタイムゾーンを格納しておき、毎回それを調べるのではなく適切なオフセットを渡すほうが良いかもしれません。

+0

私はその部分を明確にしていませんでした、私は***彼らのタイムゾーンを知っています。現在の日付から自分のタイムゾーンに関するレコードを選択することができました。これは私が必要とするもののように見えます。 – bc2946088

関連する問題