sql >> Database >  >> RDS >> PostgreSQL

Verschil tussen twee datums in postgresql

Probeer :

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

age(d1,d2) functie retourneert het aantal jaren, maanden en dagen tussen twee datums in het volgende formaat:

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

van deze uitvoer met behulp van date_part() om het enige jaarverschil te kiezen. en het is ook niet nodig om een ​​if-statement in te voeren om NULL te verwerken zoals ik coalesece heb toegevoegd die als eerste NON Null . teruggeeft waarde, dus als d1 is NULL het retourneert cuurent_date

Functiestructuur:

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;

Functie-oproep:

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



  1. Mysql Waar ... In ... EN waar ... in ... mag alleen overeenkomen met dezelfde index

  2. Regels voor het implementeren van TDD in het oude project

  3. ORA-12015:kan geen gematerialiseerde weergave snel vernieuwen van een complexe query

  4. Dynamische tabelnaam in postgreSQL 9.3