11 Şubat 2011 Cuma

ADD_MONTHS Fonksiyonu ve Gün Ekleme




SQL tarih fonksiyonlarından biri de add_months fonksiyonudur. Bu fonksiyonun çeşitli kullanım şekilleri vardır. Fakat fonksiyonun temel mantığı; girilen bir tarihten itibaren, verilen ay sayısı kadar geriye veya ileriye gitmektir. Fonksiyonu analiz edersek ;
add_months(‘date’,number)  şeklinde;
-date à girdiğimiz bir tarih,
-number à herhangi bir sayı (3,8,-4 gibi)
Şimdi fonksiyonu birkaç  örnekle inceleyelim :

İfade
Sonuç
1
ADD_MONTHS('10-APR-2010', 2)
10/06/2010
2
ADD_MONTHS(SYSDATE,2)
07/02/2011 14:00:15 --(çalıştırdığım tarih üzere)
3
ADD_MONTHS('15-JUL-1988',-2)
15/05/1988
4
ADD_MONTHS('31-JAN-2010', 1)
28/02/2010
5
ADD_MONTHS('30-JAN-2010', 1)
28/02/2010
6
ADD_MONTHS('29-JAN-2010', 1)
28/02/2010
7
ADD_MONTHS('28-JAN-2010', 1)
28/02/2010
8
ADD_MONTHS('27-JAN-2010', 1)
27/02/2010
9
ADD_MONTHS('30-JUN-1988',1)
31/07/1988
10
TO_DATE('31-JAN-2010') + 30
02/03/2010

Yukarıdaki tablonun her satırındaki örnekleri dikkatle incelemekte fayda var.
Tablodaki örneklerden ilkinde ; 10 nisan 2010 tarihine , 2 ay ekliyoruz ve sonuç olarak 10 haziran tarihine gidiyoruz. Aynı şekilde 3. Örnekte 15 temmuzdan 2 ay geriye giderek 15 mayıs tarihine geliyoruz fakat dikkat etmemiz gereken önemli bir nokta var : O da 4 ve sonraki satırlardaki örnekler.
4. Örnekte, 31 ocak tarihine bir ay eklediğimizde 28 Şubata gidiyor. Yani bu fonksiyon mantık olarak seçilen tarih üzerine 30 gün eklemiyor. Takvim üzerinde direk belirtilen günden “x ay sonrasına” gidiyor.   4,5,6 ve 7. Satırlardaki ifadelerin aynı sonucu döndürmesinin sebebi budur. 30 ocaktan 1 ay sonra da 28 şubattır; 28 ocaktan 1 ay sonra da 28 şubattır. Burada dikkat edilmesi gereken, ay ekleme işlemini gün bazında değil takvim bazında yapmasıdır.
10. örneğe baktığımızda ise ekleme işlemi tamamen gün bazında yapılmaktadır. Yani verilen tarihin üstüne takvim üzerinden x sayıda gün eklenir ve o sonuç döndürülür.



Hiç yorum yok:

Yorum Gönder