У меня есть поле 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);