Problem:
Sie möchten den letzten Tag des Monats für ein bestimmtes Datum in T-SQL finden.
Beispiel:
Unsere Datenbank hat eine Tabelle namens Furniture
mit Daten in den Spalten Id
, Name
und PurchaseDate
.
ID | Name | Kaufdatum |
---|---|---|
1 | Sofa | 2019-02-10 |
2 | Schreibtisch | 01.04.2019 |
3 | Bücherregal | 2019-05-20 |
Lassen Sie uns die Namen und Kaufdaten der Produkte und den letzten Tag des Monats abrufen, an dem diese Artikel gekauft wurden.
Lösung:
Wir verwenden die Funktion EOMONTH(), um den letzten Tag des Monats zu finden.
SELECT Name, PurchaseDate, EOMONTH(PurchaseDate) AS LastDayDate FROM Furniture;
Hier ist das Ergebnis der Abfrage:
Name | Kaufdatum | LastDayDate |
---|---|---|
Sofa | 2019-02-10 | 2019-02-28 |
Schreibtisch | 2019-04-01 | 2019-04-30 |
Bücherregal | 2019-05-20 | 2019-05-31 |
Diskussion:
Wenn Sie das Datum erhalten möchten, das den letzten Tag des Monats eines bestimmten Datums enthält, verwenden Sie die Funktion EOMONTH(). Diese Funktion akzeptiert ein obligatorisches Argument:ein Datum (oder Datum und Uhrzeit), das eine date/datetime-Spalte oder ein Ausdruck sein kann, der ein Datum zurückgibt. (In unserem Beispiel verwenden wir das PurchaseDate
Spalte.)
EOMONTH() gibt den letzten Tag des gleichen Monats wie das Argument zurück. Die obige Abfrage für das Sofa mit dem Kaufdatum „2019-02-10“ gibt „2019-02-28“ zurück; im Februar 2019 war der letzte Tag des Monats der 28.
Wenn Sie den letzten Tag des zweiten, dritten usw. Monats ab einem bestimmten Datum zurückgeben möchten, verwenden Sie das optionale zweite Argument von EOMONTH():die Anzahl der hinzuzufügenden Monate. Sehen Sie sich das Beispiel an:
SELECT Name, PurchaseDate, EOMONTH(PurchaseDate,1) AS LastDayDate FROM Furniture;
Hier ist das Ergebnis der Abfrage:
Name | Kaufdatum | LastDayDate |
---|---|---|
Sofa | 2019-02 -10 | 2019-03 -30 |
Schreibtisch | 2019-04 -01 | 2019-05 -31 |
Bücherregal | 2019-05 -20 | 2019-06 -30 |
Für das Sofa mit dem Kaufdatum „2019-02-10“ gibt diese Abfrage „2019-03-30“ zurück – der letzte Tag des nächsten Monat. Wir haben am Ende des aktuellen Monats einen Monat hinzugefügt.
Wenn Sie den letzten Tag des Monats vor finden möchten Verwenden Sie für einen bestimmten Monat einen negativen Wert (z. B. „-1“) als zweites Argument:
SELECT Name, PurchaseDate, EOMONTH(PurchaseDate,-1) AS LastDayDate FROM Furniture;
Hier ist das Ergebnis der Abfrage:
Name | Kaufdatum | LastDayDate |
---|---|---|
Sofa | 2019-02 -10 | 2019-01 -31 |
Schreibtisch | 2019-04 -01 | 2019-03 -31 |
Bücherregal | 2019-05 -20 | 2019-04 -30 |