web-dev-qa-db-fra.com

ajouter 30 minutes à datetime php / mysql

J'ai un champ datetime (endTime) dans mysql. J'utilise gmdate () pour remplir ce champ endTime.

La valeur stockée est quelque chose comme 2009-09-17 04:10:48. Je veux ajouter 30 minutes à cette heure de fin et la comparer avec l'heure actuelle. c'est-à-dire) l'utilisateur est autorisé à effectuer une certaine tâche seulement 30 minutes dans son endTime. Après 30 minutes de son endTime, je ne devrais pas lui permettre de faire une tâche.

comment puis-je faire cela en php?

j'utilise gmdate pour m'assurer qu'il n'y a pas de différence de zone.

Merci d'avance

48
someisaac

Si vous utilisez MySQL vous pouvez le faire comme ceci:

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


Pour une solution PHP pure, utilisez strtotime

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

Essaye celui-là

DATE_ADD(datefield, INTERVAL 30 MINUTE)
46
Cem Kalyoncu

MySQL a une fonction appelée ADDTIME pour ajouter deux fois ensemble - vous pouvez donc faire tout cela dans MySQL (à condition d'utiliser> = MySQL 4.1.3).

Quelque chose comme (non testé):

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

Dominc a la bonne idée, mais place le calcul de l'autre côté de l'expression.

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

Cela a l'avantage que vous effectuez le calcul de 30 minutes une fois au lieu de chaque ligne. Cela signifie également que MySQL peut utiliser l'index sur cette colonne. Ces deux vous donnent une accélération.

5
staticsan

Utiliser la fonction DATE_ADD

DATE_ADD(datecolumn, INTERVAL 30 MINUTE);
3
Basant Rules