Splurov, нет, не врубаюсь.
Получается суть первого варианта, это сделать две колонки, 'date' и 'date_format'.
'date' DATE,
'date_format' ENUM('date','month','quarter','year')
Правильно?
Если в этом вся суть, то зачем ENUM?
Проще использовать SMALLINT и ставить в нем 1, 2, 3 или 4.