Mysqlに日時フィールド(endTime)があります。 gmdate()を使用して、このendTimeフィールドに入力します。
格納される値は、2009-09-17 04:10:48のようなものです。この終了時間に30分を追加し、現在の時間と比較したいと思います。すなわち、ユーザーはendTime内で30分だけ特定のタスクを実行できます。彼のendTimeの30分後、私は彼に仕事をさせてはいけません。
どうすればPHPでそれを行うことができますか?
ゾーンの違いがないことを確認するためにgmdateを使用しています。
前もって感謝します
これを試して
DATE_ADD(datefield, INTERVAL 30 MINUTE)
MySQLには ADDTIME
と呼ばれる関数があり、2回加算するため、MySQLですべてを実行できます(> = MySQL 4.1.3を使用している場合)。
(未テスト)のようなもの:
SELECT * FROM my_table WHERE ADDTIME(endTime + '0:30:00') < CONVERT_TZ(NOW(), @@global.time_zone, 'GMT')
Domincは正しい考えを持っていますが、計算を式の反対側に置きます。
SELECT * FROM my_table WHERE endTime < DATE_SUB(CONVERT_TZ(NOW(), @@global.time_zone, 'GMT'), INTERVAL 30 MINUTE)
これには、すべての行ではなく30分の計算を1回行うという利点があります。また、MySQLはその列のインデックスを使用できることを意味します。どちらも高速化を実現します。
DATE_ADD関数を使用する
DATE_ADD(datecolumn, INTERVAL 30 MINUTE);