180 Aufrufe
Gefragt in Datenbanken von bollerkohl Mitglied (175 Punkte)
Hallo Leute,

ich muss einen Bericht generieren wo ich eure Hilfe bei der Abfrage benötige.

Vom heutigen Datum muss ich immer den Zeitraum

Heute -14 Tage und dann weitere 7 Wochen haben.

Also heute ist der 09.02.2018  und ich benötige den Zeitraum
04.12.2017 - 21.01.2018.
Nächste Woche dann den Zeitraum
11.12.2017 -  28.01.2018 usw.

Kann mir jemand helfen?

Mein Ansatz ist

Zwischen Datum()-14 Und Datum()-63 bringt aber noch Abweichungen in der Auswertung.

Vielen Dank

1 Antwort

0 Punkte
Beantwortet von mixmax Experte (2.2k Punkte)
Das Problem ist a) die Uhrzeit muss weg und b) du möchtest ja ab Montag...

Welche Datenbank ist das ? MySQL oder MSSQL?

im Falle von MSSQL so:

Folgendes benutze ich um von einem krummen Datum/Uhrzeit auf einen Wochen/Stunden/15Minuten Interval zu kommen:

[code]DECLARE @ReportStart AS DATE = CAST(CAST(CAST(CAST(DATEADD(WEEK, -2, GETDATE()) AS FLOAT)/7 AS INT)*7 AS FLOAT) AS DATETIME)
DECLARE @ReportEnd AS DATE = DATEADD(WEEK, 7, @ReportStart)
SELECT @ReportStart, @ReportEnd[/code]

Wenn man anstelle von /7 z.B. *96 nimmt kann man auch 15 Minuten intervall damit bauen ohne viel Zeiten zu vergleichen.

Aus eigener Erfahrung benutze ich für das End-Datum < Folgetag. Also z.B. < 01.02. und nicht <= 31.01. 23:59:59 - hat mehrere Vorteile:
die länge des Monats ist egal,
falls es auch Nachkommastellen bei den Sekunden gibt müsste man ja auch 23:59:59,999 noch einschließen und irgendwann wirs absurd.

Bei Mysql könnte man etwas ähnliches herleiten
...