PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Разделяне на дати въз основа на фискалната година

Всъщност предпочитам решението на Andomar (с добавянето на процеси, които автоматично попълват таблицата с периоди), но за забавление ето решение, което не го изисква.

CREATE TABLE your_table (start_date date, end_date date);
INSERT INTO your_table VALUES ('Jan-17-2008', 'May-20-2009');

SELECT
    GREATEST(start_date, ('04-01-'||series.year)::date) AS year_start,
    LEAST(end_date, ('03-31-'||series.year + 1)::date) AS year_end
FROM
    (SELECT
        start_date,
        end_date,
        generate_series(
            date_part('year', your_table.start_date - INTERVAL '3 months')::int,
            date_part('year', your_table.end_date - INTERVAL '3 months')::int)
    FROM your_table) AS series(start_date, end_date, year)
ORDER BY
    start_date;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да конфигурирам Postgresql с проект за релси?

  2. Django+Postgres ФАТАЛНО:съжалявам, вече има твърде много клиенти

  3. Разгръщане и поддръжка на PostgreSQL с Ansible

  4. Групирайте по и добавете колони

  5. Как да извикам функцията на Postgres, връщаща SETOF запис?