PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Pemisahan tanggal berdasarkan Tahun Anggaran

Saya sebenarnya menyukai solusi Andomar (dengan penambahan proses yang secara otomatis mengisi tabel Periode), tetapi untuk bersenang-senang inilah solusi yang tidak memerlukannya.

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. Fungsi currval di PostgreSQL mengeluh bahwa kolom tidak ada

  2. PostgreSQL dengan Masalah Pengembang SQL

  3. Hapus baris duplikat dari tabel

  4. Persimpangan beberapa array di PostgreSQL

  5. Apakah ukuran yang dideklarasikan bidang varchar berdampak pada PostgreSQL?