2013-04-10 4 views
-2

J'ai besoin de la sortie dans MYSQL comme ça.Sortie entre deux dates mysql

Records:

start_date | to_date 
2013-01-01 | 2013-12-31 
2013-02-01 | 2013-05-04 
2013-01-30 | 2013-04-02 
2013-04-30 | 2013-07-06 
2013-06-30 | 2013-06-09 
2013-08-30 | 2013-10-03 

mon entrée est from_date 01/04/2013 et to_date 2013-06-10

mon eteint shuld comme ceci:

start_date | to_date 
2013-01-01 | 2013-12-31 
2013-02-01 | 2013-05-04 
2013-01-30 | 2013-04-02 
2013-04-30 | 2013-07-06 
2013-06-30 | 2013-06-09 

peut tout une aide à ce sujet.

+2

suis-je stupide de voir l'idée derrière "devrait être comme ça"? Qu'est-ce que vous groupez/filtrez par? – Najzero

+0

Ma conjecture: l'utilisateur entre une plage de dates (de_date à to_date). Chaque fois que cette plage de dates chevauche l'une des plages de la base de données, elle doit sortir la plage de la base de données. Droite? –

+0

oui @MartyMcVry –

Répondre

1

Vous semblez vouloir trouver des plages chevauchant votre plage donnée;

SELECT * FROM date_table 
WHERE start_date < '2013-06-10' 
    AND to_date > '2013-04-01' 

C'est, vous comparez votre from_date avec la colonne to_date et votre to_date avec la colonne start_date.

An SQLfiddle to test with.

+0

lsaksson mais je ne suis pas obtenir tout pour cette requête SELECT * FROM table_date OU start_date < « 2013-01-01 » ET to_date> « 1/4/2013 » –

+1

@BashaGhouse Voir l'ordre des dates Dans ma requête, la date la plus tardive est dans la première condition. –

+0

gr8 .... Merci. –