2012-09-05 3 views
1

J'ai une table avec une colonne du type texte où je stocke divers paramètres, y compris les dates, en utilisant NOW() dans la requête d'insertion.Sélectionnez Date (Chaîne Date) <DATE (Colonne de texte avec date)

Maintenant je veux obtenir toutes les lignes de cette table où cette colonne est avant une date spécifique (par exemple 2012-09-19).

La comparaison via DATE(date_column)<DATE(NOW()) est facile, mais je ne sais pas comment passer une date spécifique au lieu de NOW(), car les formats de date de la chaîne d'entrée peuvent différer.

Voici un exemple de code:

INSERT INTO table (date_column) VALUES (NOW()) 

Et lors de la sélection:

SELECT * FROM table WHERE DATE(date_column)<DATE('2012-09-19'); 

EDIT: Le code ci-dessus fonctionne réellement. Il me manquait les citations autour de la date initialement.

+1

Vous pouvez ajouter une réponse vous-même et accepter, pour que les gens puissent voir que la question réponse. – lanzz

+0

Jetez un coup d'œil à la fonction STR_TO_DATE. mais vous devrez utiliser une clause where pour limiter les lignes à celles contenant des dates. Il existe probablement une colonne de nom de propriété. J'espère que vous avez appris votre leçon sur celui-ci. Deux erreurs de conception de base de données classiques dans un ceci. –

Répondre

0

Évitez de placer des fonctions autour de vos types de colonnes (WHERE FUNCTION(col) ...). Cela diminue les performances. Vous voulez avoir une table qui a l'intégrité du domaine, ce qui signifie que si vous stockez une date, il s'agit d'un type date.

Pour sélectionner les enregistrements qui correspondent à votre date, tout simplement envelopper votre date AAAA-MM-JJ entre guillemets:

SELECT * FROM table WHERE date_column < '2012-09-19' 
0

Si date_column est vraiment de type DATE, vous n'avez pas besoin d'exécuter DATE() dessus.

Notez également que l'exécution de DATE() sur date_column empêchera MySQL d'utiliser des index, vous effectuerez donc une analyse de table.

Essayez:

WHERE date_column < '2012-09-19' 
Questions connexes