sql >> Database >  >> RDS >> Mysql

Selecteer waarden tussen startdatum en einddatum

Ik lees dit probleem als zoeken naar de overlap van bereiken:

dus je hebt gegevens binnen bereik:T1 tot T3. En op zoek naar overlap met bereik T2 tot T4. Omdat ze elkaar overlappen, wil je. Echter, als de gegevens T1 tot T3 zijn en het bereik is T4 tot T5 .. geen overlap dus niet willen.

U kunt dat doen met deze vraag:

Select id 
  from eventos_sapo 
 where startDate <= '2015-02-14'
   AND endDate >= '2013-01-03';

Dus als het begon na de opgegeven datum (14 februari 2015), neem het dan niet op. of als het eindigde vóór 3 januari 2013 ... neem het dan niet op. Voeg al het andere toe, omdat het overlapt:

Als 1 voorbeeld:gegevens eindigen na de startdatum van het opgegeven bereik en de startdatum van de gegevens is vóór het einde, dus het is een van de volgende gevallen:

Data:           |---|
Given range:      |---|

Data:           |-------|
Given range:      |---|

Data:             |---|
Given range:    |---|

Data:             |---|
Given range:    |-------|


  1. ID retourneren bij INSERT?

  2. Hoe maak je alle SQL-SQLite-query's per case-statement?

  3. TOP 10 rijen ophalen zonder TOP of LIMIT te gebruiken? – Interviewvraag van de week #247

  4. Hoe kan ik MySQL-wachtwoorden decoderen?