SQL entre les dates, y compris les dates de début et de fin
J'ai donc ceci:
(CURDATE() BETWEEN start_date AND end_date)
Fonctionne très bien.
Mais quand le CURDATE()
est 2011-12-02 et la end_date
est 2011-12-02 va saisir la ligne?
E. g mon date_debut est 2011-12-01 00:00:00 et ma date de fin est 2011-12-02 23:59:59
De sorte qu'il ne fonctionne que lorsque la date est entre mais pas si c'est SUR le end_date
lui-même.
Ou peut-être qu'il doit vérifier, une fois de plus, car il doit encore être sélectionnés avec cette requête lorsqu'il est 2011-12-02 15:30:00 par exemple.
Comment puis-je faire cela?
source d'informationauteur Karem | 2011-12-02
Vous devez vous connecter pour publier un commentaire.
Bien, vous pourriez essayer de
Depuis deux colonnes sont les horodatages, vous devez vous assurer que les temps de ne pas vous passionner.
Pour garder le temps de déclenchement de vous, cast le timestamp de la date.
Peut-être la réponse à cette question se réfère à un bug dans une vieille version de MySql car
between
est inclusivece qui signifie qu'il va saisir les lignes entre le début et dates de fin inclusive, non seulement entre le début et un jour avant la fin.Essayez ceci:
Le résultat est
1
(c'est à diretrue
).Je crois que l'affiche originale problème, c'est de mélanger les bonnes dates (
DATE
) et dates avec le temps (DATETIME
ouTIMESTAMP
).Essayez ceci:
Le résultat est
0
pour la première sélectionner et1
pour la deuxième. Ce qui s'est passé est unDATE
est équivalent à unDATETIME
temps à zéro de sorte que siNOW()
est appelé exactement à minuit, il sera plus grande queCURDATE()
et à l'automne à l'extérieur de laBETWEEN
déclaration.Pour éviter ce test que le
DATE
partie d'unDATETIME
à l'aide de laDATE()
fonction:Utilisation
start_date <= CURDATE() AND end_date > CURDATE()
...
BETWEEN
Œuvres compris les valeurs limites. C'est,y compris date_debut,end_date et tous les jours de tomber entre
cast (end_date - Date_debut double précision) * 86400