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

Làm cách nào để lấy chuỗi ngày bắt đầu và kết thúc của tuần trong PostgreSQL?

Bạn có thể sử dụng date_trunc('week', ...) .

Ví dụ:

SELECT date_trunc('week', '2012-07-25 22:24:22'::timestamp);
-> 2012-07-23 00:00:00

Sau đó, bạn có thể chuyển ngày này thành ngày, nếu bạn không quan tâm đến thời gian bắt đầu.

Để biết cả ngày kết thúc:

SELECT    date_trunc('week', '2012-07-25 22:24:22'::timestamp)::date
   || ' '
   || (date_trunc('week', '2012-07-25 22:24:22'::timestamp)+ '6 days'::interval)::date;

-> 2012-07-23 2012-07-29

(Tôi đã sử dụng định dạng mặc định ở đây, tất nhiên bạn có thể điều chỉnh định dạng này để sử dụng MM / DD / YYYY.)

Lưu ý rằng, nếu bạn muốn so sánh trên dấu thời gian, thay vì sử dụng (date_trunc('week', ...) + '6 days'::interval , bạn có thể muốn thêm cả tuần và sử dụng so sánh chặt chẽ cho cuối tuần.

Điều này sẽ loại trừ y dấu thời gian vào ngày cuối cùng trong tuần (vì thời gian giới hạn là nửa đêm trong ngày).

    date_trunc('week', x)::date <= y::timestamp
AND y::timestamp <= (date_trunc('week', x) + '6 days'::interval)::date

Điều này sẽ bao gồm chúng:

    date_trunc('week', x)::date <= y::timestamp
AND y::timestamp < (date_trunc('week', x) + '1 week'::interval)

(Đó là trong một số trường hợp hiếm hoi khi bạn không thể sử dụng date_trunc trên y trực tiếp.)

Nếu tuần của bạn bắt đầu vào Chủ nhật, hãy thay thế date_trunc('week', x)::date với date_trunc('week', x + '1 day'::interval)::date - '1 day'::interval sẽ hoạt động.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhảy khoảng cách SQL qua điều kiện cụ thể và sử dụng chì () thích hợp

  2. Cách kiểm tra xem một bảng có tồn tại trong một lược đồ nhất định hay không

  3. Postgresql json like truy vấn

  4. Generate_series in Postgres từ ngày bắt đầu và ngày kết thúc trong một bảng

  5. Quản lý tính khả dụng cao trong PostgreSQL - Phần II:Trình quản lý nhân bản