sql >> Database >  >> RDS >> Database

Hoe u de laatste dag van de maand in T-SQL kunt krijgen

Probleem:

U wilt de laatste dag van de maand vinden voor een specifieke datum in T-SQL.

Voorbeeld:

Onze database heeft een tabel met de naam Furniture met gegevens in de kolommen Id , Name , en PurchaseDate .

Id Naam Aankoopdatum
1 bank 2019-02-10
2 bureau 2019-04-01
3 boekenkast 2019-05-20

Laten we de namen en aankoopdatums van de producten krijgen en de laatste dag van de maand waarin deze items zijn gekocht.

Oplossing:

We gebruiken de functie EOMONTH() om de laatste dag van de maand te vinden.

SELECT Name,
	 PurchaseDate,
	 EOMONTH(PurchaseDate) AS LastDayDate
FROM Furniture;

Dit is het resultaat van de zoekopdracht:

Naam Aankoopdatum Datum laatste dag
bank 2019-02-10 2019-02-28
bureau 2019-04-01 2019-04-30
boekenkast 2019-05-20 2019-05-31

Discussie:

Als u de datum wilt krijgen die de laatste dag van de maand van een bepaalde datum bevat, gebruikt u de functie EOMONTH(). Deze functie heeft één verplicht argument:een datum (of datum en tijd), wat een datum/datum/tijd-kolom kan zijn of een uitdrukking die een datum retourneert. (In ons voorbeeld gebruiken we de PurchaseDate kolom.)

EOMONTH() retourneert de laatste dag van dezelfde maand als het argument. De bovenstaande zoekopdracht voor de bank met de aankoopdatum '2019-02-10' retourneert '2019-02-28'; in februari 2019 was de laatste dag van de maand de 28e.

Als u de laatste dag van de tweede, derde, enz. maand vanaf een bepaalde datum wilt retourneren, gebruikt u het optionele tweede argument van EOMONTH():het aantal maanden dat moet worden toegevoegd. Bekijk het voorbeeld:

SELECT Name,
	 PurchaseDate,
	 EOMONTH(PurchaseDate,1) AS LastDayDate
FROM Furniture;

Dit is het resultaat van de zoekopdracht:

Naam Aankoopdatum Datum laatste dag
bank 2019-02 -10 2019-03 -30
bureau 2019-04 -01 2019-05 -31
boekenkast 2019-05 -20 2019-06 -30

Voor de bank met de aankoopdatum '2019-02-10', retourneert deze zoekopdracht '2019-03-30' - de laatste dag van de volgende maand. We hebben een maand toegevoegd aan het einde van de huidige maand.

Als u de laatste dag van de maand wilt vinden voor een bepaalde maand, gebruik dan een negatieve waarde (bijv. '-1') als het tweede argument:

SELECT Name,
	 PurchaseDate,
	 EOMONTH(PurchaseDate,-1) AS LastDayDate
FROM Furniture;

Dit is het resultaat van de zoekopdracht:

Naam Aankoopdatum Datum laatste dag
bank 2019-02 -10 2019-01 -31
bureau 2019-04 -01 2019-03 -31
boekenkast 2019-05 -20 2019-04 -30

  1. Oracle:als tabel bestaat

  2. Krijg de naam van de maand vanaf de datum in Oracle

  3. Zullen de prestaties van SQLite afnemen als de database groter is dan 2 gigabyte?

  4. ) Operator voor beginners