Database
 sql >> база данни >  >> RDS >> Database

Как да получите последния ден от месеца в T-SQL

Проблем:

Искате да намерите последния ден от месеца за конкретна дата в T-SQL.

Пример:

Нашата база данни има таблица с име Furniture с данни в колоните Id , Name и PurchaseDate .

Id Име Дата на покупка
1 диван 10.02.2019
2 бюро 01.04.2019
3 библиотечка 20.05.2019

Нека получим имената на продуктите и датите на покупка и последния ден от месеца, когато тези артикули са закупени.

Решение:

Ще използваме функцията EOMONTH(), за да намерим последния ден от месеца.

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

Ето резултата от заявката:

Име Дата на покупка LastDayDate
диван 2019-02-10 2019-02-28
бюро 2019-04-01 2019-04-30
библиотечка 2019-05-20 2019-05-31

Дискусия:

Ако искате да получите датата, съдържаща последния ден от месеца на дадена дата, използвайте функцията EOMONTH(). Тази функция приема един задължителен аргумент:дата (или дата и час), която може да бъде колона дата/дата и час или израз, който връща дата. (В нашия пример използваме PurchaseDate колона.)

EOMONTH() връща последния ден от същия месец като аргумента. Горната заявка за дивана с дата на покупка „2019-02-10“ връща „2019-02-28“; през февруари 2019 г., последният ден от месеца беше 28-ми.

Ако искате да върнете последния ден от втория, третия и т.н. месец от дадена дата, използвайте незадължителния втори аргумент на EOMONTH():броят на месеците за добавяне. Вижте примера:

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

Ето резултата от заявката:

Име Дата на покупка LastDayDate
диван 2019-02 -10 2019-03 -30
бюро 2019-04 -01 2019-05 -31
библиотечка 2019-05 -20 2019-06 -30

За дивана с дата на покупка „2019-02-10“ тази заявка връща „2019-03-30“ – последния ден от следващия месец. Добавихме един месец към края на текущия месец.

Ако искате да намерите последния ден от месеца преди даден месец, използвайте отрицателна стойност (напр. „-1“) като втори аргумент:

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

Ето резултата от заявката:

Име Дата на покупка LastDayDate
диван 2019-02 -10 2019-01 -31
бюро 2019-04 -01 2019-03 -31
библиотечка 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. Как да преименувате колона в SQL

  2. SQL Always On Availability Groups:Компютърни обекти

  3. 12 често използвани SQL оператори

  4. Търсене на модел на схема към асоциация на клас данни

  5. Преодоляване на пропастта в Azure:управлявани екземпляри