2010-07-21 2 views
-1

Je suis en train d'essayer d'utiliser cette requêtemysql O WH '2010-08-24 11:59:59' ENTRE c.start_date AND c.end_date;

SELECT 
a.id AS id, 
a.item AS item, 
c.id AS campaign_id, 
DATE(c.start_date) AS START, 
DATE(c.end_date) AS END 
FROM campaign c LEFT JOIN action_6 a 
ON c.id = a.campaign_id WHERE action_id = 6 
AND TIMESTAMP('2010-08-24 11:59:59') BETWEEN c.start_date AND c.end_date; 

mais je reçois un vide resultset en raison de la AND '2010-08-24 11:59:59' BETWEEN c.start_date AND c.end_date.

c.start_date et c.end_date (sur la ligne souhaitée) sont 2010-08-23 00:00:00 et 2010-07-29 23:59:59 il devrait donc être retourner la ligne oui?


Editer: Requête mise à jour pour afficher la conversion explicite.

Répondre

2

Vous obtenez un résultat vide car l'horodateur 2010-08-24 11:59:59 est et non entre 2010-07-29 23:59:59 et 2010-08 -23 00:00:00 (voir le dernier paragraphe si ce n'est pas une faute de frappe et vous vouliez vraiment dire between 2010-08-23 00:00:00 and 2010-07-29 23:59:59).

Voici deux requêtes pour tester cela.
Cette requête renvoie 0 (Faux):

SELECT '2010-08-24 11:59:59' 
BETWEEN '2010-07-29 23:59:59' AND '2010-08-23 00:00:00' 

Cette requête renvoie 1 (Vrai):

SELECT '2010-08-24 11:59:59' 
BETWEEN '2010-07-29 23:59:59' AND '2010-08-25 00:00:00' 

De plus, l'ordre des entrées est également importante: vous devez échanger les dates de début et de fin telle que la date de début précède la date de fin.

+0

ah mon erreur, ne même pas voir c'était 07 au lieu de 08 :) apprécié – Hailwood

0

En supposant que c.start_date et c.end_date sont des valeurs de type date au lieu de VARCHAR, '2010-08-24 11:59:59' est une chaîne. Vous devez le convertir pour une date

+0

ils sont tous les deux datetime, mais, j'ai essayé de les mettre dans Date (c.start_date) et Date (c.end_date) et Date ('2010-08-24 11:59:59') mais j'obtiens le même résultat , – Hailwood

Questions connexes