J'ai une table qui a des dates stockées comme texte et non comme une date_time. Je veux sélectionner des lignes qui se sont produites aujourd'hui. Je peux duper le code de la date, mais il est évident que je veux le faire de manière dynamique. P>
Sélectionnez * à partir de la vue où un anniversaire comme '% 09-07' code> p>
Sélectionnez * à partir de la vue d'anniversaire comme '%' + date_format (maintenant (), "% m-% d" d ") p> p>
3 Réponses :
Les opérateurs de mois et de jour peuvent être utilisés: si la colonne est de type varchar code> la fonction str_to_date code> peut être utilisé. Pour le transformer en une date: p>
Merci Str_To_Date () a travaillé. Ce n'est pas ma base de données, je n'écris que des requêtes contre elle. Convenu que les données doivent être stockées comme date_time, mais ce n'est pas le cas. C'est comme ça.
Génial! Pourriez-vous le marquer comme réponse / uppote-le afin que d'autres puissent trouver cette solution? @Robf.
Tout d'abord, vous devez enregistrer des dates comme mais, s'ils sont stockés comme des chaînes, vous pouvez utiliser une comparaison comme celle-ci: P> xxx pré> mais je vous recommande de corriger vos données. Si les valeurs sont dans le format AAAAY-MM-DD, faites simplement: P> date code> S, pas comme des chaînes. alter table t modify column anniversary date;
Cela devrait fonctionner, Convertissez la chaîne à la date et enregistrez la clause
SELECT * FROM view WHERE STR_TO_DATE(anniversary, '%d-%m-%Y') = CURDATE()
Une meilleure idée serait sûrement de convertir la colonne pour être une colonne DateTime appropriée. Ensuite, ce type de requête serait trivial.
Je ne sais pas ce que vous posez question est spécifiquement mais jetez un coup d'oeil à ce message [ Stackoverflow.com/Questtions/731456/convert-dates-with-mysql]
Essayez là où le mois (anniversaire) = mois (maintenant (maintenant ()) et jour (anniversaire) = jour (maintenant ()); Si l'anniversaire est une date ou une date de date