Tarih degerleri Oracle’de yüzyıl,yıl,ay,gün,saat,dakika ve saniye degerlerini ifade eden sayılar olarak saklanır.Varsayılan tarih formatı DD-MON-RR’dir.Geçerli Oracle tarih degerleri 1 Ocak 4712 M.Ö. ve 31 Aralık 9999 M.S. arasında ki degerlerdir.

NOT : Varsayılan DATE formatı NLS_DATE_FORMAT başlangıç parametresi ile verilmektedir.Bu deger kullanıcı çevre ya da oturum degişkenleri ile dagiştirilebilir.
Geçerli DATE formatını görmek için aşagıda ki sorguyu çalıştırırız ;

* SQL> SELECT * FROM nls_sessıon_parameters WHERE parameter LIKE ‘%NLS_DATE%’;
Dönen_Deger

PARAMETER VALUE
NLS_DATE_FORMAT DD/MM/RRRR
NLS_DATE_LANGUAGE TURKISH

Geçerli DATE formatını degiştirmek için aşagıda ki sorguyu çalıştırırız ;

* SQL> ALTER SESSION SET nls_date_format = ‘DD/MM/YYYY’; Dönen_Deger sessıon SET altered.


NOT : Tarih degerleri sayısal olarak saklandıgı için bunlar üzerinde aritmetik işlem yapılabilir.Tarih degerlerini ekleyip çıkartabiliriz.
ROUND FONKSİYONU
ROUND(x,y) fonksiyonu  x tarihini y(hassalık derecesine)’ye göre yuvarlar.y boş bırakılırsa varsayılan olarak güne yuvarlar.Hassalık derecesine aşagıdakileri yazabiliriz ;
•    DD : Gün bazında yuvarlama yapar.
•    W  : Hafta bazında yuvarlama yapar.
•    MM : Ay bazında yuvarlama yapar.
•    HH : Saat bazında yuvarlama yapar.
•    MI : Dakika bazında yuvarlama yapar.

* SQL> SELECT ROUND (TO_DATE (’27-ARA-2011′),’W’) FROM DUAL;
Dönen_Deger
29/12/2011
* SQL> SELECT ROUND (TO_DATE (’27-MAR-2011′),’MM’) FROM DUAL;
Dönen_Deger
01/04/2011

TRUNC Fonksiyonu
TRUNC(x,y)  fonksiyonu x tarihini y(hassalık derecesine)’ye göre kırpar.y boş bırakılırsa varsayılan olarak güne yuvarlar.

* SQL> SELECT TRUNC (TO_DATE (’27-MAR-2011′),’MM’) FROM DUAL;
Dönen_Deger
01/03/2011
* SQL> SELECT TRUNC (TO_DATE (’27-ARALIK-2011′),’W’) FROM DUAL;
Dönen_Deger
22/12/2011

MONTHS_BETWEEN Fonksiyonu
MONTHS_BETWEEN(x,y) fonksiyonu x tarihinin y tarihinden büyük olması kaydıyla , x ile y arasında ki tarihin kaç ay oldugunu bildirir.
NOT : Eger her iki tarih de aynı ise ya da her ikiside ayın son günü ise sonuç bir tamsayı degeri olur.

* SQL> SELECT MONTHS_BETWEEN(’01-EYL-2011′,’15-OCA-2011′) FROM dual;
Dönen_Deger
7,5483870967741935483870967741935483871
* SQL> SELECT MONTHS_BETWEEN(’01-EYL-2005′,’15-OCA-2011′) FROM dual;
Dönen_Deger
-64,4516129032258064516129032258064516129

ADD_MONTHS Fonksiyonu
ADD_MONTHS(x,y) fonksiyonu x tarihine y kadar ay ekler.Eger y fonksiyonu ondalık bir sayıysa bir önceki tam sayıya çevrilir.

* SQL> SELECT ADD_MONTHS(’25-EYL-2011′,10) FROM dual;
Dönen_Deger
25/07/2012
* SQL> SELECT ADD_MONTHS(’25-EYL-2011′,-10) FROM dual;
Dönen_Deger
25/11/2010

NEXT_DAY  Fonksiyonu
NEXT_DAY(x,y) fonksiyonu x tarihinden sonraki ilk y gününün tarihini verir.Gün degeri kısaltılmış olarak da yazılabilir.

* SQL> SELECT NEXT_DAY(’25-EYL-2011′,’SALI’) FROM dual;
Dönen_Deger
27/09/2011
* SQL> SELECT NEXT_DAY(’25-EYL-2011′,’PAZ’) FROM dual;
Dönen_Deger
02/10/2011

LAST_DAY Fonksiyonu
LAST_DAY(x) x fonksiyonu x tarihinde ki ayın son gününü verir.

* SQL> SELECT LAST_DAY(’10-EYL-2011′) FROM dual;
Dönen_Deger
30/09/2011

SYSDATE Fonksiyonu
Bu fonksiyonun herhangi bir argümanı bulunmamaktadır. O andaki tarih ve zaman bilgisini elde etmek amacıyla kullanılır. Örn.

* SQL> SELECT sysdate FROM dual;
Dönen_Deger
23/12/2011

CURRENT_DATE Fonksiyonu
Bu fonksiyonun da SYSDATE fonksiyonu gibi herhangi bir argümanı bulunmamaktadır. O andaki tarih ve zaman bilgisini elde etmek amacıyla kullanılır. Örn.

* SQL> SELECT CURRENT_DATE FROM DUAL;
Dönen_Deger
23/12/2011

CURRENT_TIMESTAMP Fonksiyonu
Bu fonksiyonun da CURRENT_DATE fonksiyonu gibi herhangi bir argümanı bulunmamaktadır. Bu fonksiyon da o andaki tarih ve zaman bilgisini elde etmek amacıyla kullanılır.
NOT: CURRENT_TIMESTAMP fonksiyonunun CURRENT_DATE fonksiyonundan farkı CURRENT_TIMESTAMP saniye daha ayrıntılı ve daha milimetrik  veriyor olmasıdır.

* SQL> SELECT CURRENT_TIMESTAMP FROM DUAL;
Dönen_Deger
23/12/2011 17:48:05,366000000 ASİA/BAKU

DBTIMEZONE Fonksiyonu
Veritabanı saat dilimini verir.

* SQL> SELECT DBTIMEZONE FROM DUAL;
Dönen_Deger
+00:00

SESSIONTIMESTAMP Fonksiyonu
O anki oturum için saat dilimini verir.

* SQL> SELECT SESSIONTIMEZONE FROM DUAL;
Dönen_Deger
Asia/Baku

EXTRACT Fonksiyonu : Tarih/zaman ifadelerinden belirli bir parçasını verir.
FROM_TZ Fonksiyonu : Belirli bir timesatmp degerinden saat dilimi ile birlikte timestamp degerini verir.
LOCALTIMESTAMP Fonksiyonu : Oturum saat diliminde ki tarih ve zaman bilgisini verir.
NEW_TIME Fonksiyonu : Verilen tarih degerini belirtilen farklı bir saat dilimine verir.
SYS_EXTACT_UTC Fonksiyonu : TIMESTAMP degeri için UTC(GMT) degerini verir.
TZ_OFFSET Fonksiyonu : UTC saat dilimi için ofset degerini verir.

NOT  : Örneklerimde Oracleda ki DUAL table ‘ ı ve HR user ‘ ı kullanıyorum.

Yazar : Mustafa Bektaş Tepe
Java && Oracle

8,637 total views, 10 views today