Misc. Dates – Oracle

SELECT 
  TRUNC(TRUNC(SYSDATE,'YY')-1,'YY')           AS FIRST_DAY_PREVIOUS_YEAR,
  TRUNC(SYSDATE,'YY')                         AS FIRST_DAY_CURRENT_YEAR,
  ADD_MONTHS(TRUNC(SYSDATE,'YY'),12)          AS FIRST_DAY_NEXT_YEAR,
  
  TRUNC(SYSDATE,'YY')-1                       AS LAST_DAY_PREVIOUS_YEAR,
  ADD_MONTHS(TRUNC(SYSDATE,'YY'),12)-1        AS LAST_DAY_CURRENT_YEAR,
  ADD_MONTHS(TRUNC(SYSDATE,'YY'),24)-1        AS LAST_DAY_NEXT_YEAR,
  
  TRUNC(TRUNC(SYSDATE,'MM')-1,'MM')           AS FIRST_DAY_PREVIOUS_MONTH,
  TRUNC(SYSDATE,'MM')                         AS FIRST_DAY_CURRENT_MONTH,
  ADD_MONTHS(TRUNC(SYSDATE,'MM'),1)           AS FIRST_DAY_NEXT_MONTH,
  
  TRUNC(SYSDATE,'MM')-1                       AS LAST_DAY_PREVIOUS_MONTH,
  ADD_MONTHS(TRUNC(SYSDATE,'MM'),1)-1         AS LAST_DAY_CURRENT_MONTH,
  ADD_MONTHS(TRUNC(SYSDATE,'MM'),2)-1         AS LAST_DAY_NEXT_MONTH,
  
  TRUNC(SYSDATE,'DD')-1                       AS YESTERDAY,
  TRUNC(SYSDATE,'DD')                         AS TODAY,
  TRUNC(SYSDATE,'DD')+1                       AS TOMORROW,
  
  TRUNC(SYSDATE-7,'IW')                       AS PREVIOUS_MONDAY,
  NEXT_DAY(TRUNC(SYSDATE-7,'IW'),'SUNDAY')    AS PREVIOUS_SUNDAY,
  TRUNC(SYSDATE,'IW')                         AS CURRENT_MONDAY,
  NEXT_DAY(TRUNC(SYSDATE,'IW'),'SUNDAY')      AS CURRENT_SUNDAY,
  TRUNC(SYSDATE+7,'IW')                       AS NEXT_MONDAY,
  NEXT_DAY(TRUNC(SYSDATE+7,'IW'),'SUNDAY')    AS NEXT_SUNDAY
FROM 
  DUAL