добавление 30 минут в datetime php / mysql

У меня есть поле datetime (endTime) в mysql. Я использую gmdate () для заполнения этого поля endTime.

Сохраненное значение – это что-то вроде 2009-09-17 04:10:48. Я хочу добавить 30 минут в это время и сравнить его с текущим временем. т.е.) пользователю разрешено выполнять определенную задачу всего за 30 минут в течение его конечного времени. После 30 минут его окончания, я не должен позволять ему выполнять задание.

как я могу это сделать в php?

Я использую gmdate, чтобы убедиться, что нет различий в зоне.

заранее спасибо

Если вы используете MySQL, вы можете сделать это следующим образом:

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

Для чистого PHP-решения используйте strtotime

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

Попробуй это

 DATE_ADD(datefield, INTERVAL 30 MINUTE) 

У MySQL есть функция ADDTIME для добавления два раза вместе – так что вы можете все это сделать в 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-минутный расчет один раз, а не в каждой строке. Это также означает, что MySQL может использовать индекс в этом столбце. Оба из них дают вам ускорение.

Использовать функцию DATE_ADD

 DATE_ADD(datecolumn, INTERVAL 30 MINUTE);