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