Is there any way to force at least one column NOT NULL
If you use version 8.0.16 or above, use CHECK constraint. 

Something like 

CHECK COALESCE(`day`, `date`) IS NOT NULL 


for "at least one is not null", or 

CHECK `day` IS NULL + `date` IS NULL = 1


for "strongly one is not null".