To answer the question you asked, "why is INTERVAL not a valid syntax in IF statement"...

I'm not aware of any restriction in MySQL stored programs that prohibits the use of the keyword INTERVAL within an IF statement. Obviously, the INTERVAL keyword isn't part of the IF construct; the keyword is only valid in the context of some expressions.

FOLLOWUP

I notice that the rewrite above is not equivalent to the original. In the original, under the ELSE condition, it's DATE_ADD(_todaydate,. That differs from the other two conditions, where it's DATE_ADD(daytemp

A slight re-write to accommodate that difference, adding another variable _bdt, allows us to still just use two SELECT statements...