SQL DateTime Range

Ronald Nickel

Legendäres Mitglied
Hallo Ayomler

ich hätte mal wieder ein kleines SQL Problem:

ich habe je Datensatz 2 Feldervom Type DATE (start_date und end_date)
Nun brauche ich ein MySQL-Statement, welches mir alle Datensätze zurückgibt die innerhalb des Zeitrahmen der beiden Datumsangaben das heutige Datum haben.

Lieben Gruß Ronny


 
Hilft dir das ?

CODE
SELECT start_date, end_date FROM Datensatz
WHERE MONTH( start_date ) = MONTH( NOW() ) AND DAY(start_date) = DAY( NOW() )
or
MONTH( end_date ) = MONTH( NOW() ) AND DAY(end_date) = DAY( NOW() )




Grüße MrVienna




 
Klammern nicht vergessen.
wink.gif

Mal abgesehen davon, dass es nicht das geforderte erfüllt, und ich es nicht so schreiben würde.


Ich vermute mal, es müsste wie folgt lauten (MySQL als Grundlage):

SQL SELECT start_date, end_date FROM Tabelle WHERE CURDATE() >= start_data AND CURDATE() <= end_date




Falls das nicht funktioniert (ich habe lange nicht mehr mit SQL gearbeitet), sollte jedoch das auf jedenfall klappen:


SQL SELECT start_date, end_date FROM Tabelle WHERE (CURDATE() + 0) >= (start_data + 0) AND (CURDATE() + 0) <= (end_date + 0)


Das wandelt im Grunde genommen das Datumsformat von YYYY-MM-DD nach YYYYMMDD um. Alternativ würde natürlich auch folgendes klappen.


SQL SELECT start_date, end_date FROM Tabelle WHERE DATE_FORMAT(CURDATE(), '%Y%m%d') >= DATE_FORMAT(start_data, '%Y%m%d') AND DATE_FORMAT(CURDATE(), '%Y%m%d') <= DATE_FORMAT(end_date, '%Y%m%d')

 
@MrVienna

soweit ich das "lesen" kann gibts hier nur einen treffer wenn startdate oder enddate genau dem heutigen tage entsprechen. Sehe ich das richtig?

Wenn zwischen start_date und end_date 30 Tage liegen muss ich also 30 tage lang einen Treffer erzielen.

Gruß Ronny
 
QUOTE soweit ich das "lesen" kann gibts hier nur einen treffer wenn startdate oder enddate genau dem heutigen tage entsprechen. Sehe ich das richtig?


Ja das ist richtig. Habe die Aufgabenstellung leider zu flüchtig (und falsch) gelesen. Der Intervall-Befehl wäre hier angebracht.
Falls nicht inzwischen jemand anderer die Lösung findet mache ich mich noch einmal schlau. Muss vorher noch was Dringendes erledigen.

Grüße MrVienna
 
QUOTE (Sascha Ahlers @ Mi 21.09.2011, 11:04)Ich vermute mal, es müsste wie folgt lauten (MySQL als Grundlage):


SQL SELECT start_date, end_date FROM Tabelle WHERE CURDATE() >= start_data AND CURDATE() <= end_date



reicht völlig aus.
 
Danke für die Info, dachte ich so auch schon, nur wenn man seit mehr als 3 Jahren nicht mehr wirklich was in MySQL macht, ist das mit der Erinnerung immer so'n Ding.
wink.gif
 
Zurück
Oben