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

postgresql:khoảng thời gian chia nhỏ tại sự kiện

Bạn có thể làm UNION thay vì. Bằng cách này, bạn không tạo ra các hàng không cần thiết

SELECT country, start_date, 
       CASE WHEN event_date BETWEEN start_date AND end_date 
            THEN event_date - 1 
            ELSE end_date
       END AS end_date, event_date
  FROM table1
 UNION ALL
SELECT country, event_date, end_date, event_date
  FROM table1
 WHERE event_date BETWEEN start_date AND end_date
 ORDER BY country, start_date, end_date, event_date

Đây là SQLFiddle bản demo

Đầu ra:

| country | start_date |   end_date | event_date |
|---------|------------|------------|------------|
|       A | 1960-01-01 | 1994-07-19 | 1994-07-20 |
|       A | 1994-07-20 | 1999-12-31 | 1994-07-20 |
|       B | 1926-01-01 | 1995-12-31 |     (null) |



  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ó bất kỳ tùy chọn nào cho một bảng tham gia cho nhiều hiệp hội không?

  2. Cách nhanh chóng loại bỏ một người dùng có các đặc quyền hiện có

  3. Bảng tham gia sql để rails truy vấn bản ghi hoạt động

  4. Đăng ký sớm cho PGDay.IT 2011

  5. Sẽ tốt hơn nếu sử dụng nhiều cơ sở dữ liệu với một lược đồ, hay một cơ sở dữ liệu với nhiều lược đồ?