2010-06-23 5 views
4

Voici ma table actuelle mysqlComment valider la date d'expiration sur MySQL requête

id | file  | expiry_date 
--------------------------------------- 
1 | sample.zip | 2010-02-03 11:07:03 
2 | sample2.zip | 2010-07-13 11:07:03 

Requête:

SELECT * 
    FROM download 
WHERE expiry_date` `how to validate here` 

Je veux valider si expiry_date est expiré le fichier ne peut pas télécharger.

Comment faire?

Répondre

8
SELECT * FROM download WHERE expiry_date > CURRENT_TIMESTAMP 

ou

SELECT * FROM download WHERE expiry_date > NOW() 
+2

+1: Corriger, et des exemples de deux natif MySQL (NOW) et norme ANSI (CURRENT_TIMESTAMP) Date/heure actuelle –

+1

grâce @John Conde pour la réponse. +1 @OMG Explications des poneys – kampit

+0

très bien ....... – edCoder

1

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(); 
+0

Merci David L Ernstrom pour le 'UTC_TIMESTAMP()' – kampit