PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Đón ngày cuối cùng của tháng trong PostgreSQL

Chúng ta có thể sử dụng kỹ thuật sau trong PostgreSQL để trả về ngày cuối cùng của một tháng nhất định.

Đây có thể là ngày cuối cùng của tháng hiện tại hoặc ngày cuối cùng của tháng dựa trên ngày mà chúng tôi chỉ định.

Cuối tháng Hiện tại

Dưới đây là một ví dụ trả về ngày cuối cùng của tháng hiện tại:

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

Kết quả:

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

Điều này sử dụng date_trunc() của PostgreSQL , cùng với một số số học ngày tháng để trả về kết quả mà chúng ta muốn. Hàm này cắt ngắn giá trị ngày / giờ thành một độ chính xác được chỉ định.

Trong trường hợp này, tôi sử dụng now() hàm để trả về ngày hiện tại và 'month' đối số sửa đổi ngày đó thành đầu tháng. Sau đó, tôi thêm một tháng vào đó (tính đến đầu tháng sau), sau đó trừ đi một ngày kể từ ngày đó để cho chúng tôi cuối tháng trước (là cuối tháng hiện tại).

Chúng tôi có thể chuyển nó thành một giá trị ngày tháng nếu được yêu cầu:

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

Kết quả:

2022-04-30

Đây là một lần nữa, cùng với ngày thực tế mà tôi đã chạy ví dụ:

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

Kết quả:

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

Kết thúc một tháng được chỉ định

Nó không nhất thiết phải là cuối tháng hiện tại. Chúng tôi có thể chỉ định bất kỳ ngày nào và nó sẽ trả về cuối tháng, dựa trên ngày đó.

Ví dụ:

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

Kết quả:

2030-07-31

Ví dụ về cơ sở dữ liệu

Dưới đây là một ví dụ sử dụng ngày tháng từ cơ sở dữ liệu:

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;

Kết quả:

+---------------------+--------------+
|     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. Cách phân vùng bảng postgres bằng bảng trung gian

  2. phần trăm từ dữ liệu biểu đồ

  3. Cách ánh xạ một mảng PostgreSQL với Hibernate

  4. Hàm tương tự trong Postgres với pg_trgm

  5. Hạn chế tên cột bảng Postgres?