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

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

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

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

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

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


person someisaac    schedule 17.09.2009    source источник


Ответы (6)


Если вы используете MySQL это можно сделать так:

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


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

strtotime('+ 30 minute',$yourdate);
person RageZ    schedule 17.09.2009

Попробуй это

DATE_ADD(datefield, INTERVAL 30 MINUTE)
person Cem Kalyoncu    schedule 17.09.2009

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

Что-то вроде (непроверено):

SELECT * FROM my_table WHERE ADDTIME(endTime + '0:30:00') < CONVERT_TZ(NOW(), @@global.time_zone, 'GMT')
person Dominic Rodger    schedule 17.09.2009
comment
Я пришел сюда в поисках универсального способа добавления переменных datetime, и только этот ответ сработал для меня. - person kurast; 09.04.2013

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

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

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

person staticsan    schedule 17.09.2009

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

DATE_ADD(datecolumn, INTERVAL 30 MINUTE);
person Basant Rules    schedule 15.11.2016

Получить дату из таблицы MySQL, добавив 30 минут

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
person Balaji    schedule 21.07.2021