oracle pl sql’de ay başı ay sonu çeyrek başı çeyrek sonu önceki çeyrek önceki çeyrek başı önceki çeyrek son günü v.s. gibi çok kullanılan sql ifadelerini aşağıya ekledim.
Trunc, add_months, last_day, trunc(,”) fonksiyonlarını kullanarak aşağıdaki gibi ilgili tarihleri getirdim.
AY

önceki ay, sonraki ay, ayın son günü, ayın ilk günü
SELECT sysdate as su_an, --şu an
trunc(sysdate,'Q') as ceyrek_basi, --çeyrek başı
add_months(trunc(sysdate,'Q'),-3) as onceki_ceyrek_basi, --önceki çeyreğin başı
add_months(trunc(sysdate,'Q'),+3) as sonraki_ceyrek_basi, --sonraki çeyreğin başı
add_months(trunc(sysdate,'Q'),+3)-1 as ceyrek_son_gunu, --çeyrek sonu
trunc(sysdate,'Q')-1 as onceki_ceyrek_son_gun --önceki çeyrek son gün
FROM sys.DUAL;
ÇEYREK

çeyrek başı, çeyrek son günü, önceki çeyrek, sonraki çeyrek
SELECT sysdate as su_an, --şu an
trunc(sysdate,'MM') as ay_basi, --ay başı
trunc(sysdate,'Month') as ay_basi_, --ay başı
add_months(sysdate,-1) as bir_ay_once, --bir ay önce
last_day(sysdate) as bu_ayin_son_gunu, --bu ayın son günü
sysdate-30 as otuz_gun_once, --add_months(sysdate,-1) den farklı sonuç verebilir.
last_day(add_months(sysdate,-1) ) as gecen_ayin_son_gunu, --onceki_ayin_son_gunu
last_day(add_months(sysdate,-2) ) as iki_ay_once_ayin_son_gunu, --2 ay önce ayın son günü
trunc(add_months(sysdate,-3),'MM') as uc_ay_once_ayin_ilk_gunu --üç ay önce ayın ilk günü
FROM sys.DUAL ;
YIL

yılın başı, yılın sonu
SELECT sysdate as su_an, --şu an
trunc(sysdate,'YYYY') bu_yilin_basi,
add_months(trunc(sysdate,'YYYY'),+12)-1 bu_yilin_sonu,
add_months(sysdate,-12) as gecen_sene, --1 yıl önce.
trunc(add_months(sysdate,-12),'Year') as gecen_yil_ilk_gun, --geçen yılın ilk günü
trunc(add_months(sysdate,-12),'YYYY') as gecen_yil_ilk_gun, --geçen yılın ilk günü, geçen yılın başı
trunc(sysdate,'YYYY')-1 as bir_yil_once_son_gun, --geçen yılın son günü
trunc(add_months(sysdate,-12),'YYYY')-1 as iki_yil_once_son_gun --iki yıl önce son gün
FROM sys.DUAL ;