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 |