Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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


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

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

Ответ 2

Попробуйте этот

DATE_ADD(datefield, INTERVAL 30 MINUTE)

Ответ 3

У MySQL есть функция ADDTIME для добавления два раза вместе - так что вы можете сделать все это в MySQL (при условии, что вы используя >= MySQL 4.1.3).

Что-то вроде (untested):

SELECT * FROM my_table WHERE ADDTIME(endTime + '0:30:00') < CONVERT_TZ(NOW(), @@global.time_zone, 'GMT')

Ответ 4

Dominc имеет правильную идею, но вычисляет с другой стороны выражения.

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

Это имеет то преимущество, что вы делаете 30-минутный расчет один раз, а не на каждую строку. Это также означает, что MySQL может использовать индекс в этом столбце. Оба из них дают вам ускорение.

Ответ 5

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

DATE_ADD(datecolumn, INTERVAL 30 MINUTE);