cial Icons

PLSQL Ayın Son İş Günü

PLSQL AYIN SON GÜNÜ

         
        Merhaba bu yazımda plsql ile ayın son iş gününü bulmaya çalışacağız. Aslında PLSQL'de ki LAST_DAY fonksiyonu bize ayın son gününü vermekte fakat sizin çalıştığınız iş yerinde de sizden "Ayın son günü hafta sonuna geliyorsa ayın son iş gününü alın Umut Bey" gibi bir istek geliyorsa bu durumda ne yapılması gerektiğini paylaşacağım.

















Mantıken ayın son günü pazar ise 2 gün geri , cumartesi ise 1 gün geri gitmemiz gerekecek. Öncelikle to_char fonksiyonu ile günümüzün ne olduğunu herhangi bir dilde öğrenebiliriz.

select 
  to_char(
    last_day(to_date('23.06.2017', 'dd.mm.yyyy')), 
    'DAY', 
    'NLS_DATE_LANGUAGE=TURKISH'
  ) 
from 
  dual

to_char içine ilk parametre olarak last_day ile tarihimizi veriyoruz(burada to-date ile tarih verildi fakat procedurelerinizde parametre olarak aldığımızı kullanacağız.), 2. parametremiz 1. parametrenin day kısmını isteyeceğimiz parametre, 3. parametre ise session'ın tarih dili. Bu şekilde aldığımız günlerde stringin içi boşluklu olabilmekte.


bu durumdan kurtulmak içinse rtrim() fonksiyonunu kullanabiliriz.











 rtrim(to_char(last_day(to_date('23.06.2017','dd.mm.yyyy')),
                              'DAY',
                              'NLS_DATE_LANGUAGE=TURKISH'))

son olarak aldığımız bu gün sonucunu decode fonksiyonu ile karşılaştırmasını yapacağız. Decode bize eğer gün cumartesi ise şu veriyi return et eğer pazar ise şu veriyi return et mantığının plsql'de koda dökülmüş halidir.

select decode(
rtrim(to_char(last_day(to_date('24.08.2017','dd.mm.yyyy')), 'DAY'
 'NLS_DATE_LANGUAGE=TURKISH')),
            
                'CUMARTESI',
                last_day(to_date('24.08.2017','dd.mm.yyyy')) - 1,
            
                'PAZAR',
                last_day(to_date('24.08.2017','dd.mm.yyyy')) - 2,
            
                last_day(to_date('24.08.2017','dd.mm.yyyy'))
            
                )
    from dual

buradaki ilk parametremiz rtrimle boşluklarını sildiğimiz ayın son gününün türkçe karşılığı,2.parametre ise 1. parametre ile karşılaştırılan parametre ve eğer 1. parametre buna eşitse 3. parametreyi return dönmekte. yani Cumartesi ise  'last_day(to_date('24.08.2017','dd.mm.yyyy')) - 1' sonucunu dönmekte, yine aynı mantıkla 4. parametre ile de 1. parametremiz karşılaştırılıp aynı ise 5. parametre dönülmekte ve bu şekilde devam edebilmektedir. son olarak yazdığınız parametre ise eğer hiçbirine eşit değilse dönmesi gereken sonucu göstermektedir.

kendime notlar silsilesi...



1 yorum :

  1. İşte yatırımcılar iletişim E-posta bilgileri, _ lfdsloans@lemeridianfds.com Veya Whatsapp +1 989-394-3740, işimi başlatmak için 90.000,00 Euro'luk kredi kullanmama yardımcı oldu ve çok minnettarım, burada denemek gerçekten zordu. bekar bir anne gibi bir şey yapmak benim için kolay olmadı ama Le_Meridian'ın yardımı ile işimin güçlenip büyümesini ve genişlemesini seyrettiğimde yüzüme gülümsedi. burada ama gerçekten minnettarlığımı ifade etmeliyim ki maddi yardım isteyen ya da oradaki işle uğraşan veya iş projesini başlatmak isteyen herkes bunu görebilir ve zorluğun üstesinden gelme umuduyla ... Teşekkürler.

    YanıtlaSil