ADD_MONTHS Fonksiyonu ve Gün Ekleme
Merhaba arkadaşlar, Bu makalemde add_months() fonksiyonundaki bir takım incelikleri sizlerle paylaşacağım. Tarih bilgisi içeren önemli ve kritik raporlarınızda kesinlikle dikkatinizden kaçmaması gereken bir konu olduğunu düşünüyorum.
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.