Dynamically generate last day of prior quarter based on today's date.

Tommy
Tommy Member
edited January 2023 in Beast Mode

Hello, I need help generating the last day of the prior quarter based on today's date. This is used to determine which variables should be displayed based on if their date column is between ranges based on the last day of the prior quarter. I have been unsuccessful in my attempts so far. Any help is appreciated.

Answers

  • ST_Superman
    ST_Superman Domo Employee

    @Tommy

    CASE
      WHEN QUARTER(CURDATE())=1 THEN STR_TO_DATE(CONCAT('12-31-',YEAR(CURDATE())-1), '%m-%d-%Y')
      WHEN QUARTER(CURDATE())=2 THEN STR_TO_DATE(CONCAT('03-31-',YEAR(CURDATE())), '%m-%d-%Y')
      WHEN QUARTER(CURDATE())=3 THEN STR_TO_DATE(CONCAT('06-30-',YEAR(CURDATE())), '%m-%d-%Y')
      WHEN QUARTER(CURDATE())=4 THEN STR_TO_DATE(CONCAT('09-30-',YEAR(CURDATE())), '%m-%d-%Y')
    END
    

  • Another version would be

    LAST_DAY(CURDATE() - INTERVAL MOD(MONTH(CURDATE()), 3) MONTH)
    

    To break it down:

    MONTH(CURDATE()) - returns the month number of the current date (1-12)
    
    MOD(..,3) returns the remainder when dividing by the month number by 3 so the last month of the quarter will be 0
    
    INTERVAL .. MONTH - subtracts the number of months to get to the last month of the prior quarter
    
    LAST_DAY - returns the last day of the month for the given date
    
                            
    **Was this post helpful? Click Agree or Like below**
    **Did this solve your problem? Accept it as a solution!**