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

Số tuần tùy chỉnh của PostgreSQL - tuần đầu tiên có ngày 1 tháng 2

date_trunc() cắt ngắn vào Thứ Hai trước đó . Bạn vẫn có thể sử dụng nó bằng cách thêm 2 ngày vào đầu vào (chênh lệch giữa Thứ Bảy và Thứ Hai), sau đó trừ 2 ngày từ đầu ra. Hoạt động hoàn hảo.

Truy vấn này tạo ra kết quả mong muốn của bạn chính xác :

SELECT d::date                     AS "Calendar_Date"
     , EXTRACT('WEEK' FROM d)::int AS "Week_No"
     , to_char(d, 'Dy')            AS "WeekDay_No"
     , base_nr + (rn::int - 1) / 7 AS "Customized_Week_No"
FROM  (
   SELECT date_trunc('week', feb3) - interval '2 days' AS day1 -- subtract 2 days
        , EXTRACT('year' FROM feb3)::int * 100 + 1     AS base_nr
   FROM  (SELECT timestamp '2015-02-03') input(feb3)           -- add 2 days, so Feb 3 (!)
   ) t, generate_series (day1
                       , day1 + interval '1 year - 1 day' 
                       , interval '1 day') WITH ORDINALITY AS d(d, rn);

Chỉ cần cung cấp ngày 3 tháng 2 của năm tương ứng:timestamp '2015-02-03' .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao Postgres Cho phép Tôi Có các Cột không nằm trong Nhóm Theo?

  2. Truy vấn sử dụng hai giá trị cột để tạo phạm vi

  3. PostgreSQL sang XML với 3 Bảng

  4. Django + PostgreSQL:tạo cơ sở dữ liệu (cấp đặc quyền gì)

  5. pg-promise:sử dụng kết quả của một truy vấn trong truy vấn tiếp theo trong một giao dịch