Neu Workflow - SQL - Frage zur DATEADD()-Funktion

Ahok

Gut bekanntes Mitglied
11. September 2023
345
17
Hallo zusammen,

am Letzten Tag jedes Monats um 23:59 Uhr soll eine Statistik-Mail an einen Kunden gehen. Momentan begrenze ich den Zeitraum der SQL-Abfrage mithilfe des folgenden Codes:
Code:
DECLARE @von datetime = DATEADD(MONTH, -1, GETDATE());
DECLARE @bis datetime = GETDATE();

Meine Frage:
Ist damit im jeden Monat eine lückenlose Statistik sichergestellt? Versteht diese Funktion für @von, dass der Startzeitraum der letzte Tag des vorherigen Monats um 23:59 Uhr ist, unabhängig davon wieviele Tage der aktuelle Monat hat?
 

Ahok

Gut bekanntes Mitglied
11. September 2023
345
17
Da ich vermute, dass die Antwort auf meine Frage nein ist, habe ich noch ein wenig herumprobiert. Meines Verständnis nach müsste so das richtige Datumsformat erzeugt werden, aber leider will es nicht funktioniern. Die Abfrage gibt keinen Fehler aus, aber kommt einfach leer zurück. Was ist mein Fehler?

Code:
DECLARE @von DATETIME;
SET @von = DATETIME2FROMPARTS ( YEAR(@von), MONTH(@von), 1, 0, 0, 0, 0, 0 );

DECLARE @bis DATETIME;
SET @bis = DATETIME2FROMPARTS ( YEAR(@von), MONTH(@von), Day(@bis), 23, 59, 59, 0, 0 );
Code:
WHERE (Verkauf.tAuftrag.dErstellt BETWEEN @von AND @bis)
 

Ahok

Gut bekanntes Mitglied
11. September 2023
345
17
Hat sich erledigt. Die Lösung ist:

Code:
DECLARE @von DATETIME = GETDATE();
SET @von = DATETIMEFROMPARTS  ( YEAR(@von), MONTH(@von), 1, 0, 0, 0, 0 );

DECLARE @bis DATETIME = GETDATE();
SET @bis = DATETIMEFROMPARTS ( YEAR(@bis), MONTH(@bis), Day(EOMONTH(@bis)), 23, 59, 59, 0 );
 
  • Gefällt mir
Reaktionen: jtldudel

Ähnliche Themen