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

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

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

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 ;