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

Đón ngày đầu tiên của tháng trong PostgreSQL

Chúng ta có thể sử dụng phương thức sau trong PostgreSQL để trả về ngày đầu tiên của một tháng nhất định.

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

Lấy ngày đầu tiên của tháng cho phép chúng tôi thực hiện các phép tính sâu hơn về ngày kết quả, như thêm một số ngày nhất định vào đầu tháng, v.v.

Bắt đầu tháng hiện tại

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

SELECT date_trunc('month', now());

Kết quả:

2022-04-01 00:00:00+10

Điều này sử dụng date_trunc() của PostgreSQL hàm để 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.

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())::date;

Kết quả:

2022-04-01

Đâ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())::date AS "Start of Month";

Kết quả:

+--------------+----------------+
| Current Date | Start of Month |
+--------------+----------------+
| 2022-04-09   | 2022-04-01     |
+--------------+----------------+

Bắt đầu một tháng được chỉ định

Nó không nhất thiết phải là đầu của 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ề ngày bắt đầu của tháng, dựa trên ngày đó.

Ví dụ:

SELECT date_trunc('month', date '2030-07-14')::date;

Kết quả:

2030-07-01

Sau đó, chúng tôi có thể sử dụng kết quả để thực hiện các hành động khác trên đó. Ví dụ:chúng ta có thể thêm một số ngày nhất định vào kết quả như sau:

SELECT date_trunc('month', date '2030-07-14')::date + 20;

Kết quả:

2030-07-21

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)::date AS "The 1st of the Month",
    date_trunc('month', rental_date)::date + 19 AS "The 20th of the Month"
FROM rental WHERE customer_id = 459 LIMIT 10;

Kết quả:

+---------------------+----------------------+-----------------------+
|     rental_date     | The 1st of the Month | The 20th of the Month |
+---------------------+----------------------+-----------------------+
| 2005-05-24 22:54:33 | 2005-05-01           | 2005-05-20            |
| 2005-06-17 02:50:51 | 2005-06-01           | 2005-06-20            |
| 2005-06-17 09:38:22 | 2005-06-01           | 2005-06-20            |
| 2005-06-17 16:40:33 | 2005-06-01           | 2005-06-20            |
| 2005-06-20 02:39:21 | 2005-06-01           | 2005-06-20            |
| 2005-06-20 12:35:44 | 2005-06-01           | 2005-06-20            |
| 2005-06-20 12:42:00 | 2005-06-01           | 2005-06-20            |
| 2005-06-21 02:39:44 | 2005-06-01           | 2005-06-20            |
| 2005-07-06 00:22:29 | 2005-07-01           | 2005-07-20            |
| 2005-07-08 02:51:23 | 2005-07-01           | 2005-07-20            |
+---------------------+----------------------+-----------------------+

  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 quyền siêu người dùng mặc định của postgres bị xóa vô tình - tôi có thể lấy lại không?

  2. Ràng buộc duy nhất về sự kết hợp của hai cột?

  3. Hàm SQL rất chậm so với truy vấn không có trình bao bọc hàm

  4. Gỡ cài đặt hoàn toàn PostgreSQL 9.0.4 khỏi Mac OSX Lion?

  5. Hướng dẫn sử dụng pgBouncer cho PostgreSQL