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

Вземете последния ден от месеца в PostgreSQL

Можем да използваме следната техника в PostgreSQL, за да върнем последния ден от даден месец.

Това може да бъде последният ден от текущия месец или последният ден от месеца въз основа на дата, която посочваме.

Край на текущия месец

Ето пример, който връща последния ден от текущия месец:

SELECT (date_trunc('month', now()) + interval '1 month - 1 day');

Резултат:

2022-04-30 00:00:00+10

Това използва date_trunc() на PostgreSQL функция, заедно с някаква аритметика за дата, за да върне желаните резултати. Тази функция съкращава стойност за дата/час до определена точност.

В този случай използвам now() функция за връщане на текущата дата и 'month' аргумент променя тази дата в началото на месеца. След това добавих един месец към това (което го довежда до началото на следващия месец), след което извадих един ден от тази дата, за да ни даде края на предходния месец (който е краят на текущия месец).

Можем да го приведем към стойност на дата, ако е необходимо:

SELECT (date_trunc('month', now()) + interval '1 month - 1 day')::date;

Резултат:

2022-04-30

Ето го отново, заедно с действителната дата, на която пуснах примера:

SELECT 
    now()::date AS "Current Date",
    (date_trunc('month', now()) + interval '1 month - 1 day')::date AS "End of Month";

Резултат:

+--------------+--------------+
| Current Date | End of Month |
+--------------+--------------+
| 2022-04-09   | 2022-04-30   |
+--------------+--------------+

Край на определен месец

Не е задължително да е краят на текущия месец. Можем да посочим всяка дата и тя ще върне края на месеца въз основа на тази дата.

Пример:

SELECT (date_trunc('month', date '2030-07-14') + interval '1 month - 1 day')::date;

Резултат:

2030-07-31

Пример за база данни

Ето пример, който използва дати от база данни:

SELECT
    rental_date,
    (date_trunc('month', rental_date) + interval '1 month - 1 day')::date AS "End of Month"
FROM rental WHERE customer_id = 459 LIMIT 10;

Резултат:

+---------------------+--------------+
|     rental_date     | End of Month |
+---------------------+--------------+
| 2005-05-24 22:54:33 | 2005-05-31   |
| 2005-06-17 02:50:51 | 2005-06-30   |
| 2005-06-17 09:38:22 | 2005-06-30   |
| 2005-06-17 16:40:33 | 2005-06-30   |
| 2005-06-20 02:39:21 | 2005-06-30   |
| 2005-06-20 12:35:44 | 2005-06-30   |
| 2005-06-20 12:42:00 | 2005-06-30   |
| 2005-06-21 02:39:44 | 2005-06-30   |
| 2005-07-06 00:22:29 | 2005-07-31   |
| 2005-07-08 02:51:23 | 2005-07-31   |
+---------------------+--------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Превръщане на произволно много редове в колони в PostgreSQL

  2. Как да намерите името на ограничение в PostgreSQL

  3. Защо PostgreSQL не харесва имената на таблици с ГОЛИНИ РЕГИСТРИ?

  4. Използване на прозоречни функции в изявление за актуализиране

  5. АКТУАЛИЗИРАНЕ с ORDER BY