54

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

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

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

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

前もって感謝します

4

6 に答える 6

125

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

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


純粋な PHP ソリューションの場合は、strtotimeを使用します

strtotime('+ 30 minute',$yourdate);
于 2009-09-17T05:33:09.020 に答える
47

これを試してみてください

DATE_ADD(datefield, INTERVAL 30 MINUTE)
于 2009-09-17T05:34:53.243 に答える
7

MySQL には、ADDTIME2 回足し合わせるために呼び出される関数があります。そのため、MySQL ですべてを行うことができます (>= MySQL 4.1.3 を使用している場合)。

(未テスト) のようなもの:

SELECT * FROM my_table WHERE ADDTIME(endTime + '0:30:00') < CONVERT_TZ(NOW(), @@global.time_zone, 'GMT')
于 2009-09-17T05:34:35.233 に答える
5

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

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

これには、30 分の計算をすべての行ではなく 1 回行うという利点があります。これは、MySQL がその列のインデックスを使用できることも意味します。これらは両方ともスピードアップをもたらします。

于 2009-09-17T07:08:05.880 に答える
4

DATE_ADD 関数を使用する

DATE_ADD(datecolumn, INTERVAL 30 MINUTE);
于 2016-11-15T04:45:29.293 に答える
0

30 分追加して MySQL テーブルから日付を取得する

SELECT loginDate, date_add(loginDate,interval 30 minute) as newLoginDate 
FROM `tableName`;

これは以下のようになります

Login Date - 2020-07-22 14:00:00
New Login Date - 2020-07-22 14:30:00
于 2021-07-21T14:59:53.257 に答える