Une préoccupation que vous devez prendre en compte est quel est le fuseau votre EXPIRY_DATE est stocké dans le fuseau horaire par rapport de votre serveur MySQL. Je l'ai utilisé des solutions comme les suivantes:
SELECT * FROM `download` WHERE `expiry_date` > NOW();
La solution, cependant, ne me donne pas nécessairement la bonne réponse que je cherchais comme la fonction NOW() est localisée au fuseau horaire du serveur mysql. À moins que votre expiry_dates ne soit entré dans le serveur déjà localisé sur votre serveur avec NOW(), vous obtiendrez une comparaison incorrecte.
Dans tous nos systèmes, nous stockons les horodatages dans la base de données en utilisant UTC. Malheureusement, le centre de données que nous hébergeons exige que les serveurs soient localisés à l'EST, ce qui peut potentiellement gâcher toutes nos comparaisons. La solution consistait à utiliser la fonction UTC_TIMESTAMP(), qui renvoie la date et l'heure UTC non localisées.
SELECT * FROM `download` WHERE `expiry_date` > UTC_TIMESTAMP();
+1: Corriger, et des exemples de deux natif MySQL (NOW) et norme ANSI (CURRENT_TIMESTAMP) Date/heure actuelle –
grâce @John Conde pour la réponse. +1 @OMG Explications des poneys – kampit
très bien ....... – edCoder