Вы можете использовать логические логики c:
where
(is_special = 'false' and normal_expiry_date > current_date)
or (is_special = 'true' and special_expiry_date > current_date)
Примечание: неясно, каков тип данных is_specia
, поэтому вам может потребоваться адаптировать условие равенства. Если это Postgres логическое значение, например:
where
(not is_special and normal_expiry_date > current_date)
or (is_special and special_expiry_date > current_date)