29 Eylül 2016 Perşembe

SQL' de TARİH İŞLEMLERİ


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.876368



SELECT 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ç:1
SELECT (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        

  Örnek olarak tablolarda kullanımı şu şekildedir:

 Select DATE_PART('day',guncel_tarih_kolon_adi::timestamp - giris_tarihi_kolon_adi::timestamp) from tablo_adi;










Hiç yorum yok:

Yorum Gönder