PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Różnica między dwiema datami w postgresql

Wypróbuj :

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

age(d1,d2) funkcja zwraca liczbę lat, miesięcy i dni między dwiema datami w następującym formacie:

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

z tego wyjścia za pomocą date_part() wybrać jedyną różnicę roku. a także nie ma potrzeby umieszczania instrukcji if do obsługi NULL jak dodałem coalesece który zwraca pierwszy NON Null wartość, więc jeśli d1 jest NULL zwraca cuurent_date

Struktura funkcji:

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;

Wywołanie funkcji:

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. ActiveRecord::StatementInvalid:PG InFailedSqlTransaction

  2. Znalezienie największej grupy kolejnych liczb w obrębie partycji

  3. Jak określić automatycznie wygenerowany klucz podstawowy używany jako klucz obcy dla innej tabeli?

  4. Jak monitorować wydajność PostgreSQL 12 za pomocą OmniDB — część 1

  5. wyszukaj duplikaty z różnych pól w postgresql