PostgreSql'de Tarih İşlemleri:
PostgreSql'de Tarih İşlemleri ile İlgili En Çok Kullanılan Fonksiyonlar ve Örnek Kullanımları:
SELECT CURRENT_DATE+INTERVAL '1 day';--- Şuanki tarihin 1 gün sonrasını verir. '+' yerine '-' kullanıldığında şuanki tarihin 1 gün öncesini verecektir. 1 yerine girilecek sayı kadar şuanki tarihin sonrası veya öncesine göre işlem yapmak mümkündür. Tablo sorgusu üzerinde kullanımı ise;
(select tarihlerin_yeraldigi_kolon_adi-interval '1 day' from tablo_adi) şeklinde yazılırsa tablodaki ilgili tarihlerin 1 gün öncesini listeleyecektir.
Ayrıca sorguda gün yerine ay, yil üzerinde aynı işlemleri yapmak mümkün bunun örnek gösterimi aşağıdaki gibidir:
select current_date+interval '1 month'; --- Şuanki tarihin 1 ay sonrasını verir.
select current_date+interval '1 year'; --- Şuanki tarihin 1 yıl sonrasını verir.
SELECT EXTRACT(DAY FROM TIMESTAMP '2001-02-16 20:38:40');---- Tanımlanan tarihin gününü verir. Sonuç:16
Sorguda 'DAY' yerine 'MONTH' ,'YEAR', 'HOUR', 'MINUTE' girildiğinde tanımlanan tairihin ay,yıl, saat veya dakika verisini döndürür. Kullanım şekilleri şöyle:
- Select extract(month from timestamp '2001-02-16 20:38:40'); --- Sonuç:2 (ay)
- Select extract(year from timestamp '2001-02-16 20:38:40'); ---Sonuç:2001 (yıl)
- Select extract(hour from timestamp '2001-02-16 20:38:40'); ---Sonuç:20 (saat)
- Select extract(minute from timestamp '2001-02-16 20:38:40');
SELECT EXTRACT(DECADE FROM TIMESTAMP '2001-02-16 20:38:40');--- Tanımlanan tarihte yılın onluk kısmına kadar olanını döndürür. Sonuç: 200
SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40');--- Tanımlanan tarihin haftanın kaçıncı gününe denk olduğunu döndürür. Sonuç:5 (0-pazar, 1 p.tesi,...6 c.tesi olarak tanımlıdır.)
SELECT EXTRACT(DOY FROM TIMESTAMP '2001-03-25 20:38:40');--- Tanımlanan tarihin yılın kaçıncı gününe denk olduğunu döndürür. Sonuç:84
SELECT EXTRACT(MONTH FROM INTERVAL '2 years 13 months');--- Tanımlanan tarihin ay değerinin yıla bölümünden kalanı verir. Sonuç:1
SELECT date_trunc('hour', TIMESTAMP '2001-02-16 20:38:40');
--- Tanımlanan tarihin saat başlangıcını verir. Sonuç:2001-02-16 20:00:00
'hour' yerine 'month' veya 'year' girildiğinde ay veya yılın başlangıç değerini veir.
- SELECT date_trunc('month', TIMESTAMP '2001-02-16 20:38:40'); --- Sonuç:"2001-02-01 00:00:00"
- SELECT date_trunc('year', TIMESTAMP '2001-02-16 20:38:40'); --- Sonuç:"2001-01-01 00:00:00"
SELECT TIMESTAMP 'now';
--- Sistem tarihini döndürür. Sonuç: 2016-09-29 03:26:38.876368SELECT timeofday();
--- Güncel tarihin ay ve gün karşılığını verir. Sonuç: "Thu Sep 29 03:28:50.899577 2016 BRT"
SELECT LOCALTIMESTAMP;
--- Güncel tarihi tarih ve saat olarak verir. Sonuç: 2016-09-29 03:31:52.407552
PostgreSql'de Tarih Farkı:
SELECT DATE_PART('year', '2012-01-01'::date) - DATE_PART('year', '2011-10-02'::date);
--- Tanımlanan iki farklı tarihin yıl olarak farkını döndürür. Sonuç:1SELECT (DATE_PART('year', '2012-01-01'::date) - DATE_PART('year', '2011-10-02'::date)) * 12 +(DATE_PART('month', '2012-01-01'::date) - DATE_PART('month', '2011-10-02'::date));
--- Tanımlanan iki farklı tarihin ay olarak farkını döndürür. Sonuç:3
SELECT '2011-12-31 01:00:00'::timestamp - '2010-09-17 23:00:00'::timestamp;
--- Tanımlanan iki farklı tarihin gün olarak farkını gün ve saat olarak döndürür. Sonuç: "469 days 02:00:00"
SELECT DATE_PART('day', '2011-12-31 01:00:00'::timestamp - '2011-12-29 23:00:00'::timestamp);
--- Tanımlanan iki farklı tarihin gün olarak farkını gün sayısı olarak döndürür. Sonuç: 1
Select DATE_PART('day',guncel_tarih_kolon_adi::timestamp - giris_tarihi_kolon_adi::timestamp) from tablo_adi;