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
Essaye celui-là
DATE_ADD(datefield, INTERVAL 30 MINUTE)
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')
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.
Utiliser la fonction DATE_ADD
DATE_ADD(datecolumn, INTERVAL 30 MINUTE);