2017-02-18 2 views
2

Je demande des dates à partir d'une base de données mysql. Lorsque j'essaie de sélectionner uniquement les dates entre un certain et à ce jour, je n'obtiens pas les résultats attendus.Comment vérifier si une date est entre deux dates mysql?

Ma requête:

select * from tbl_billing where date BETWEEN '09-02-2017' and '10-02-2017' 

Ma sortie:

09-02-2017 
10-02-2017 
10-01-2017 
09-01-2017 
09-01-2017 

Mon résultat souhaité:

09-02-2017 
10-02-2017 
+0

quel est votre type de champ de date dans le tableau de MySQL? –

+1

''jj-mm-aaaa'' n'est pas un MySQL valide [date littérale] (https://dev.mysql.com/doc/fr/date-and-time-literals.html). – eggyal

Répondre

1

Vous pouvez utiliser le format de date sql canonique

select * from tbl_billing where date BETWEEN '2017-02-09' and '2017-02-10' 

ou convertir correctement en utilisant str_to_date

select * from tbl_billing where date BETWEEN str_to_date('09-02-2017', '%d-%m-%Y') 
      and str_to_date('10-02-2017', '%d-%m-%Y') 

mais si aussi votre date est un varchar alors vous devez convertir cette colonne trop

select * from tbl_billing where str_to_date(date,'%d-%m-%Y') BETWEEN str_to_date('09-02-2017', '%d-%m-%Y') 
      and str_to_date('10-02-2017', '%d-%m-%Y') 
+0

bonjour romain merci par des conseils moi mais la question était mon datatype date est varchar et je ne peux pas le changer parce que j'ai utilisé dans de nombreuses pages de sorte qu'il ne peut pas être possible de changer le type de données varchar à ce jour. si vous avez une solution s'il vous plaît dites-moi monsieur roman – phpguru

+1

@ phpguru Change it. Changez les pages. Sinon, pas de 'gourou' !! – Strawberry

+0

@phpguru si vous avez aussi la colonne de date comme varchar alors vous devez convertir la colonne aussi .. réponse mis à jour ..let me sais – scaisEdge