sql >> Database teknologi >  >> RDS >> PostgreSQL

Datoopdeling baseret på regnskabsår

Jeg foretrækker faktisk Andomars løsning (med tilføjelse af en proces, der automatisk udfylder tabellen Perioder), men for sjov er her en løsning, der ikke kræver det.

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. En-til-mange-til-en med attributter Form med Symfony 3 / Doktrin

  2. Kan ikke gemme UTF8-tegn i MySQL

  3. Vores mest populære database blogindlæg i 2017

  4. Automatisk genereret sekvensnummer stirrende fra 001 (KUN FOR 3 CIFRE) - PHP / MYSQL