Problem:
Du vil gerne finde den sidste dag i måneden for en bestemt dato i T-SQL.
Eksempel:
Vores database har en tabel med navnet Furniture
med data i kolonnerne Id
, Name
og PurchaseDate
.
Id | Navn | Købsdato |
---|---|---|
1 | sofa | 2019-02-10 |
2 | skrivebord | 2019-04-01 |
3 | reol | 2019-05-20 |
Lad os få produkternes navne og købsdatoer og den sidste dag i måneden, hvor disse varer blev købt.
Løsning:
Vi bruger funktionen EOMONTH() til at finde den sidste dag i måneden.
SELECT Name, PurchaseDate, EOMONTH(PurchaseDate) AS LastDayDate FROM Furniture;
Her er resultatet af forespørgslen:
Navn | Købsdato | LastDayDate |
---|---|---|
sofa | 2019-02-10 | 2019-02-28 |
skrivebord | 2019-04-01 | 2019-04-30 |
reol | 2019-05-20 | 2019-05-31 |
Diskussion:
Hvis du gerne vil have den dato, der indeholder den sidste dag i måneden på en given dato, skal du bruge funktionen EOMONTH(). Denne funktion tager et obligatorisk argument:en dato (eller dato og klokkeslæt), som kan være en dato/dato/klokkeslæt kolonne eller et udtryk, der returnerer en dato. (I vores eksempel bruger vi PurchaseDate
kolonne.)
EOMONTH() returnerer den sidste dag i samme måned som argumentet. Ovenstående forespørgsel til sofaen med købsdatoen '2019-02-10' returnerer '2019-02-28'; i februar 2019 var den sidste dag i måneden den 28.
Hvis du vil returnere den sidste dag i den anden, tredje osv. måned fra en given dato, skal du bruge EOMONTH()'s valgfrie andet argument:antallet af måneder, der skal tilføjes. Se på eksemplet:
SELECT Name, PurchaseDate, EOMONTH(PurchaseDate,1) AS LastDayDate FROM Furniture;
Her er resultatet af forespørgslen:
Navn | Købsdato | LastDayDate |
---|---|---|
sofa | 2019-02 -10 | 2019-03 -30 |
skrivebord | 2019-04 -01 | 2019-05. -31 |
reol | 2019-05. -20 | 2019-06 -30 |
For sofaen med købsdatoen "2019-02-10", returnerer denne forespørgsel "2019-03-30" - den sidste dag i næste måned. Vi har tilføjet en måned til slutningen af den aktuelle måned.
Hvis du gerne vil finde den sidste dag i måneden før en given måned, skal du bruge en negativ værdi (f.eks. '-1') som det andet argument:
SELECT Name, PurchaseDate, EOMONTH(PurchaseDate,-1) AS LastDayDate FROM Furniture;
Her er resultatet af forespørgslen:
Navn | Købsdato | LastDayDate |
---|---|---|
sofa | 2019-02 -10 | 2019-01 -31 |
skrivebord | 2019-04 -01 | 2019-03 -31 |
reol | 2019-05. -20 | 2019-04 -30 |