Database
 sql >> Baza danych >  >> RDS >> Database

Jak uzyskać ostatni dzień miesiąca w T-SQL?

Problem:

Chcesz znaleźć ostatni dzień miesiąca dla określonej daty w T-SQL.

Przykład:

Nasza baza danych zawiera tabelę o nazwie Furniture z danymi w kolumnach Id , Name i PurchaseDate .

Identyfikator Nazwa Data zakupu
1 sofa 2019-02-10
2 biurko 2019-04-01
3 regał 2019-05-20

Uzyskajmy nazwy produktów i daty zakupu oraz ostatni dzień miesiąca, w którym te produkty zostały zakupione.

Rozwiązanie:

Użyjemy funkcji EOMONTH(), aby znaleźć ostatni dzień miesiąca.

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

Oto wynik zapytania:

Nazwa Data zakupu Data ostatniego dnia
sofa 2019-02-10 2019-02-28
biurko 2019-04-01 2019-04-30
regał 2019-05-20 2019-05-31

Dyskusja:

Jeśli chciałbyś otrzymać datę zawierającą ostatni dzień miesiąca w danej dacie, użyj funkcji EOMONTH(). Ta funkcja przyjmuje jeden obowiązkowy argument:datę (lub datę i godzinę), która może być kolumną daty/daty/godziny lub wyrażeniem zwracającym datę. (W naszym przykładzie używamy PurchaseDate kolumna.)

EOMONTH() zwraca ostatni dzień tego samego miesiąca jako argument. Powyższe zapytanie o sofę z datą zakupu ‘2019-02-10’ zwraca ‘2019-02-28’; w lutym 2019 ostatnim dniem miesiąca był 28.

Jeśli chcesz zwrócić ostatni dzień drugiego, trzeciego itd. miesiąca od podanej daty, użyj opcjonalnego drugiego argumentu funkcji EOMONTH():liczby miesięcy do dodania. Spójrz na przykład:

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

Oto wynik zapytania:

Nazwa Data zakupu Data ostatniego dnia
sofa 2019-02 -10 2019-03 -30
biurko 2019-04 -01 2019-05 -31
regał 2019-05 -20 2019-06 -30

W przypadku sofy z datą zakupu „2019-02-10” to zapytanie zwraca „2019-03-30” – ostatni dzień następnego miesiąc. Do końca bieżącego miesiąca dodaliśmy jeden miesiąc.

Jeśli chcesz znaleźć ostatni dzień miesiąca przed w danym miesiącu, jako drugi argument użyj wartości ujemnej (np. „-1”):

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

Oto wynik zapytania:

Nazwa Data zakupu Data ostatniego dnia
sofa 2019-02 -10 2019-01 -31
biurko 2019-04 -01 2019-03 -31
regał 2019-05 -20 2019-04 -30

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zindeksowane widoki i statystyki

  2. Poznaj podstawy rejestrowania w Javie

  3. Jak przyspieszyć zapytania SQL

  4. Korzystanie ze śledzenia przyczynowości w celu zrozumienia wykonywania zapytania

  5. Wielowyrazowe TVF w Dynamics CRM