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

Perbedaan antara dua tanggal di postgresql

Coba :

date_part('year',age(coalesce(d1,current_date), d2))::int;

age(d1,d2) fungsi mengembalikan jumlah tahun, bulan, dan hari antara dua tanggal dalam format berikut:

xxx year(s) xxx mon(s) xxx day(s).

dari output ini menggunakan date_part() untuk memilih satu-satunya perbedaan tahun. dan juga tidak perlu meletakkan pernyataan if untuk menangani NULL karena saya telah menambahkan coalesece yang mengembalikan NON Null first nilai, Jadi jika d1 adalah NULL itu mengembalikan cuurent_date

Struktur Fungsi:

CREATE OR REPLACE FUNCTION diff(d1 date,d2 date) RETURNS int AS $$
BEGIN

 RETURN date_part('year',age(coalesce(d1,current_date), d2))::int;
END
$$ language plpgsql;

Panggilan Fungsi:

select * from diff(null,'2010-04-01');
select * from diff('2012-10-01','2010-04-01');



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Berikan hak istimewa untuk database tertentu di PostgreSQL

  2. HAPUS PostgreSQL rekursif

  3. Perbarui beberapa baris dalam kueri yang sama menggunakan PostgreSQL

  4. Bagaimana LocalTime() Bekerja di PostgreSQL

  5. PostgreSQL mengubah cap waktu jenis tanpa zona waktu -> dengan zona waktu