web-dev-qa-db-ja.com

日時php / mysqlに30分を追加します

Mysqlに日時フィールド(endTime)があります。 gmdate()を使用して、このendTimeフィールドに入力します。

格納される値は、2009-09-17 04:10:48のようなものです。この終了時間に30分を追加し、現在の時間と比較したいと思います。すなわち、ユーザーはendTime内で30分だけ特定のタスクを実行できます。彼のendTimeの30分後、私は彼に仕事をさせてはいけません。

どうすればPHPでそれを行うことができますか?

ゾーンの違いがないことを確認するためにgmdateを使用しています。

前もって感謝します

48
someisaac

MySQL を使用している場合、次のようにできます。

SELECT '2008-12-31 23:59:59' + INTERVAL 30 MINUTE;


純粋な場合PHPソリューションを使用 strtotime

strtotime('+ 30 minute',$yourdate);
114
RageZ

これを試して

DATE_ADD(datefield, INTERVAL 30 MINUTE)
46
Cem Kalyoncu

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')
5
Dominic Rodger

Domincは正しい考えを持っていますが、計算を式の反対側に置きます。

SELECT * FROM my_table WHERE endTime < DATE_SUB(CONVERT_TZ(NOW(), @@global.time_zone, 'GMT'), INTERVAL 30 MINUTE)

これには、すべての行ではなく30分の計算を1回行うという利点があります。また、MySQLはその列のインデックスを使用できることを意味します。どちらも高速化を実現します。

5
staticsan

DATE_ADD関数を使用する

DATE_ADD(datecolumn, INTERVAL 30 MINUTE);
3
Basant Rules