sql >> Database teknologi >  >> RDS >> Database

Sådan får du den sidste dag i måneden i T-SQL

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

  1. Hvordan indsætter man i samme tabel i MySQL?

  2. Indsæt opdatering udløser, hvordan man bestemmer, om indsætte eller opdatere

  3. Hvad er fordele og ulemper ved at udføre beregninger i sql vs. i din ansøgning

  4. CRS 11.2.0