2010-04-10 4 views
-1

Salut à tous, j'ai besoin d'aide pour trouver une plage de jours pour ma requête de sélection. Voici le code que je suis d'essayer:Problème de plage de dates mySQL

select id, idNumber, theDateStart, theDateEnd 
from clients 
WHERE idNumber = '010203' 
AND theDateStart >= '2010-04-09' 
AND theDateEnd <= '2010-04-09'; 

Voici ce que les données de la table ressemble à:

TheDateStart = 2010-04-09 
TheDateEnd = 2010-04-11 

Lors du test de ce code ci-dessus, il ne remplit pas rien. Si je supprime TheEndDate, il remplit mais avec d'autres données de tables ce qu'il ne devrait pas faire (il ne devrait avoir qu'un seul enregistrement).

Je sais que le problème est dans les deux dates. Je ne suis pas sûr de savoir comment obtenir une plage de dates pour theDateStart et theDateEnd, car si quelqu'un l'essaie, disons, le 2010-04-10, il doit encore connaître sa date limite du 2010-04-09 - 2010- 04-11. Mais maintenant, il ne ...

Toute aide serait géniale! : O)

David

+0

ce qui se passe pour IDnumber comme '% 010203%', sont vos colonnes de date chaîne ou la date! – lexu

Répondre

0

Ok. i got it: o) (youpi-moi aller)

select id, idNumber, theDateStart, theDateEnd 
from clients 
WHERE idNumber = 'NB010203' 
AND '2010-04-09' BETWEEN theDateStart AND theDateEnd; 

David

0

Essayez de suivre

select id, idNumber, theDateStart, theDateEnd 
from clients 
WHERE idNumber = '010203' 
AND date_format(theDateStart, '%Y-%m-%d')>= '2010-04-09' AND 
    date_format(theDateEnd, '%Y-%m-%d')<= '2010-04-09' 
+0

Essayé ceci mais toujours montré aucune donnée après l'exécutant. – StealthRT

+0

Juste nit-picking: ne pas convertir la date-colonne en chaîne, à la place convertir la chaîne à ce jour. Il n'y a qu'une seule chaîne, il y a (potentiellement) beaucoup de colonnes différentes. une conversion au lieu de plusieurs => gain de performance. De plus, si vous convertissez la date-colonne, un index potentiel ne peut pas être utilisé. – lexu

+0

Ah, note prise: o) Merci, Lexu – StealthRT

Questions connexes