BeastMode: Identify Odd or Even Year

This is something I solved on my own, wanting to share here in case someone else can use this approach. Also would love to hear if you have another way to provide the same solution.

What was the business problem? I have a card that displays a KPI as a % over time. I wanted to color code the years so they alternate between two colors based on the year being an odd or even number.

Using the "Odd or Even" approach in the color rules future proofs the solution so I don't have to state the year explicitly.

The BeastMode I came up with is a simple case statement that subtracts the charted year (in my case `Order Date`) from the year of the current date:

case 

when YEAR(CURDATE())-YEAR(`Order Date`)=0 then 'Even'

when YEAR(CURDATE())-YEAR(`Order Date`)=2 then 'Even'

when YEAR(CURDATE())-YEAR(`Order Date`)=4 then 'Even'

when YEAR(CURDATE())-YEAR(`Order Date`)=6 then 'Even'

when YEAR(CURDATE())-YEAR(`Order Date`)=8 then 'Even'

else 'Odd'

end

Best Answer

  • MarkSnodgrass
    MarkSnodgrass Portland, Oregon 🟤
    Accepted Answer

    @swagner you can use the MOD function to see if there is a remainder when dividing by 2 to determine if it is an odd or even number:

    CASE WHEN MOD(YEAR(`Order Date`),2) = 0 THEN 'Even'

    ELSE 'Odd'

    END

Answers