PostgreSQL age Kullanımı
PostgreSQL'de age() fonksiyonu, iki timestamp veya tarih değişkenine dayalı olarak aralarındaki farkı döndürür. Bu, farkın büyüklüğüne göre yıl, ay, gün veya ay, gün veya gün şeklinde olabilir.
İki şeklide kullanımı vardır..
- age(timestamp) veya age(timestamp, timestamp)
İlki, geçerli tarihe göre yaşı döndürür. Özellikle, current_date()'den (gece yarısı) çıkarır. İkinci kullanım ise, ikinci tarihin birinci tarihten çıkarılmasına şeklinde olur.
İlk kullanıma göre bir örnek yapalım...
SELECT age(timestamp '2021-02-06');
-- Sonuç : "2 years 3 mons 4 days" şeklinde döner. (sorgunun çalıştırıldığı tarihe göre)
İkinci örneğimizde ise iki tarihin farkını döndürelim...
SELECT age(timestamp '2021-01-01', timestamp '2020-03-14');
-- Sonuç : 9 mons 18 days şeklinde döner
Eğer farkı sadece bir zaman tipi olarak istiyorsanız, extract() ya da date_part() kullanabilirsiniz. Aşağıda yıl olarak döndüren örnek kullanıma bakalım..
SELECT extract(year from age(timestamp '2003-10-25'));
-- Sonuç : 20.0 dönecektir. (sorgunun çalıştırıldığı tarihe göre)
extract() ve date_part() double tipinde değer döndürür. ::int kullanarak bunu tamsayıya çevirebilirsiniz. Aşağıda örnek kullanım gösterilmiştir.
SELECT extract(year from age(timestamp '2003-10-25'))::int;
-- Sonuç : 20 dönecektir. (sorgunun çalıştırıldığı tarihe göre)