J'ai une très vieille database que j'ai faite quand j'étais encore en train d'apprendre PHP et MySQL. Si je remplis:
SELECT * FROM Jobs WHERE (date BETWEEN 'Aug.01 2016' AND 'Aug.31 2016')
Je peux réellement peupler des rangées
Found rows: 4 Warnings: 0 Duration for 1 query: 0.000 sec.
Mais une fois que je change de mois (déplacement de la plage du 1er août au 1er juillet):
SELECT * FROM Jobs WHERE (date BETWEEN 'Jul.01 2016' AND 'Aug.31 2016')
Je n'ai rien, même si la gamme Juillet 1 ~ Août 31 comprend Août 1 ~ Août 31 (de l'exemple précédent), qui devrait peupler au less 4 lignes
Found rows: 0 Warnings: 0 Duration for 1 query: 0.016 sec.
Y a-t-il un moyen de peupler les lignes même si elles ont un mois différent?
Vous devez d'abord convertir votre string de date à une date valide:
SET @date := 'Aug.01 2016'; SELECT STR_TO_DATE(@date,'%M.%d %Y');
Sortie (aaaa-mm-jj): 2016-08-01
Maintenant, utilisez ceci dans votre requête pour searchr des résultats ayant des dates entre 2016-07-01 & 2016-08-31
.
SELECT * FROM Jobs WHERE STR_TO_DATE(date,'%M.%d %Y') BETWEEN '2016-07-01' AND '2016-08-31';
Remarque: mais la date doit être stockée dans une colonne de type de données de date
. Il est grand time de convertir le datatype
de datatype
à la date
de votre colonne de date
.
Pour ce faire, suivez les étapes ci-dessous:
ALTER TABLE Jobs ADD new_date_column date; UPDATE Jobs SET new_date_column = STR_TO_DATE(date,'%M.%d %Y'); ALTER TABLE Jobs DROP COLUMN `date`; ALTER TABLE Jobs CHANGE COLUMN `new_date_column` `date` date;
Les étapes dans une coquille de noix:
Ajouter une nouvelle colonne dans la table des Jobs
de type date
.
Maintenant, mettez à jour cette nouvelle colonne avec les valeurs de votre colonne de date
après la conversion en une date valide.
Vous n'avez pas besoin de cette colonne de date
. Alors déposez-le.
Renommez maintenant la colonne nouvellement créée à date
.