ben

OMÜ , Bilgisayar Mühendisliği, 13'

21 Şubat 2022 Pazartesi

Tarihsel Fonksiyonlar

 Veri türü olarak tarihsel veri türlerine sahip alanlar üzerinde tarihsel işlemler yapabilmemizi sağlayan fonksiyonlardır. Örneğin şuan ki tarih verisini almak, son 2 yıl içindeki verileri getirmek, haftanın pazartesi ve cuma günlerine ait verileri getirmek gibi işlemler için bazı fonksiyonlara ihtiyacımız olacak.


CURRENT_DATE/CURRENT_TIME/CURRENT_TIMESTAMP/NOW

Şu anki tarihsel veri için current_date, şuanki saat bilgisi için current_time , şu anki hem tarih hem de saat bilgisi için ise current_timestamp kullanılır. Şu anki tarih ve zaman bilgisi için current_time yerine now fonksiyonu da kullanılabilir.


YIL/AY /GUN

Elimizdeki tarihsel verinin sadece yıl kısmı, yada sadece ay kısmını almak için to_char ile parçalamamız yeterlidir.


SAAT/DAKİKA

Elimizdeki tarihsel verinin sadece kısmını parçalamak için to_char kullanmamız yeterli


EXTRACT

Tarihsel veriyi parçalamak için kullanılır.

- yıl: extract(year from now())
- ay:  extract(month from now())
- gun:  extract(day from now())
- saat:  extract(hour from now())
- dakika:  extract(minute from now())
- saniye:  extract(second from now())

DATE_TRUNC()

Tarihsel veriyi gün, ay, saat, dakika alanlarına göre yuvarlama işlemi yapar.


HAFTANIN GÜNÜ

Haftanın hangi günde olduğunu (pazartesi, salı, çarşamba..) getirmek için to_char fonksiyonunu day parametresi ile kullanmamız gerekiyor. Oracle veri tabanındaki kullanımdaki gibi kullanırsak her zaman sonuç çıktısı ingilizce olarak gelecektir. Eğer ülke diline göre çıktı alabilmek için TM format (translation mode) modunda tarihsel verinin gün kısmının ne olduğunu alabiliriz.


Eğer hala ingilizce çıktı alıyorsanız; SET lc_time = 'tr_TR'; komutunu çalıştırdıktan sonra yeniden deneyin.

AY BİLGİSİ

Verilen tarihin hangi ayda olduğunu( ocak, şubat, mart) getirmek için to_char fonksiyonunun month parametresini kullanmalıyız.  Türkçe sonuc almak için yukarıdaki ayarları yapmayı unutmayın.


Eğer veri tabanından ya da bir fonksiyondan değilde manuel bir tarih girilecekse bu tarihsel veriyi to_date ile tarihsel veriye çevirmeden  üzerinde tarihsel fonksiyonlarını kullanamazsınız.



ZAMAN YOLCULUĞU

Verilen tarihten belirli bir tarihe ileri ya da geri gidebilmek için, Oracle veritabanındaki gibi interval fonksiyonunu kullanmak gerekiyor.

- 30 dk ileri: now()+interval '30' minute
- 30 dk geri: now()+interval '-30' minute
- 2 saat ileri: now()+interval '2' hour
- 2 saat geri: now()+interval '-2' hour
- 3 gün ileri: now()+interval '3' day
- 3 gün geri: now()+interval '-3' day
- 4 gün ileri: now()+interval '4' month
- 4 gün geri: now()+interval '-4' month
- 2 yıl ileri: now()+interval '2' year
- 2 yıl geri: now()+interval '-2' year

6 ay önceki bugün için;


Bir tarih değil de  iki tarih aralığını almak için between ile şuan ile zaman yolculuğuna çıkmış olan tarih aralığını where şartına verebiliriz. between de küçük olan tarihi her zaman önce vermemiz gerektiğini unutmayalım.

son 6 ay içinde doğan kullanıcılar;


önümüzdeki 6 ay içinde doğan yolcular;



TARİH FARKI/YAŞ

İki tarih farkını almak için age komutu kullanılır. verilen sonucu yıl ay gün olarak döndürür.


Eğer age fonksiyonuna sadece bir tane tarih verilirse, şuanki bulunulan tarih ile farkını hesaplar.


YA DA






Hiç yorum yok: