Database
 sql >> Datenbank >  >> RDS >> Database

So erhalten Sie den letzten Tag des Monats in T-SQL

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