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

Разлика между две дати в postgresql

Опитайте :

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

age(d1,d2) функцията връща броя години, месеци и дни между две дати в следния формат:

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

от този изход с помощта на date_part() за да изберете единствената разлика в годината. и също така няма нужда да поставяте оператор if за обработка на NULL тъй като добавих coalesece което връща първо NON Null стойност, така че ако d1 е NULL връща cuurent_date

Функционална структура:

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;

Извикване на функция:

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. Прилагане на множество функции на прозорец върху един и същи дял

  2. Свържете се с отдалечена база данни PostgreSql с помощта на Powershell

  3. Грешка в Postgres:не можа да се отвори файл за четене:Разрешението е отказано

  4. Извикване на недефинирана функция pg_connect() - Wamp

  5. Промяна на таблица с команда Sqitch Rework