PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Pobierz ostatni dzień miesiąca w PostgreSQL

Możemy użyć następującej techniki w PostgreSQL, aby zwrócić ostatni dzień danego miesiąca.

Może to być ostatni dzień bieżącego miesiąca lub ostatni dzień miesiąca na podstawie określonej przez nas daty.

Koniec bieżącego miesiąca

Oto przykład, który zwraca ostatni dzień bieżącego miesiąca:

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

Wynik:

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

To używa date_trunc() PostgreSQLa funkcja, wraz z arytmetykami dat, aby zwrócić żądane wyniki. Ta funkcja obcina wartość daty/godziny do określonej precyzji.

W tym przypadku używam now() funkcja zwracająca bieżącą datę i 'month' argument modyfikuje tę datę na początek miesiąca. Następnie dodałem do tego jeden miesiąc (co oznacza początek następnego miesiąca), a następnie odjąłem jeden dzień od tej daty, aby dać nam koniec poprzedniego miesiąca (czyli koniec bieżącego miesiąca).

W razie potrzeby możemy rzutować go na wartość daty:

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

Wynik:

2022-04-30

Oto znowu, wraz z faktyczną datą uruchomienia przykładu:

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

Wynik:

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

Koniec określonego miesiąca

Nie musi to być koniec bieżącego miesiąca. Możemy określić dowolną datę, a zwróci koniec miesiąca na podstawie tej daty.

Przykład:

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

Wynik:

2030-07-31

Przykład bazy danych

Oto przykład wykorzystujący daty z bazy danych:

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;

Wynik:

+---------------------+--------------+
|     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. Zabij sesję/połączenie postgresql

  2. Heroku Rails 4 nie może połączyć się z serwerem:połączenie odrzucone

  3. Jak zmienić ustawienia regionalne podczas formatowania liczb w PostgreSQL?

  4. django.db.utils.ProgrammingError:relacja app_user nie istnieje podczas testu manage.py

  5. Szybki sposób na sprawdzenie liczby wierszy tabeli w PostgreSQL