Задать вопрос
@apptimeru

Как хранить неполную дату в Mysql?

Уважаемые эксперты подскажите пожалуйста, как правильно хранить даты в базе, если дата может быть неполной. Например календарь выхода чего либо. Мы не всегда знаем точную дату выхода, иногда только месяц и год, иногда только квартал и год и т.д

Вот пример как надо хранить:

Первая строка содержит (месяц-год), вторая строка содержит точную дату (день-месяц-год), третья содержит (квартал-год), и последняя только (год).

Как все это правильно хранить и потом работать, правильно сортировать и выводить? Я использую 4 разных поля (дата, месяц, квартал, год) но что-то мне подсказывает что есть способ более логичный и правильный.
  • Вопрос задан
  • 609 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Два поля - `date` и `estimation`. Второе поле - enum('date', 'month', 'quarter', 'year'). В первое поле вписывается точная дата или последняя дата соответствующего интервала. Тогда сортировка ORDER BY (`date`, `estimation`) выдаст в оптимальном порядке. Ну и для красоты останется сделать преобразование даты в соответствующий интервал.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
С учётом сущности "квартал" - вряд ли получиться логичней, не припоминаю ни одного готового формата/стандарта даты в БД, где было бы поле "квартал", если только свой составной тип сделать, но такой фунционал "из коробки" в MySQL отсутствует и вряд ли так вот просто получиться в MySQL его "вкрутить".

Единственный вариант, который приходит мне в голову - изобрести свой формат даты на основе поля CHAR/VARCHAR, типа ГОД-КВАРТАЛ-МЕСЯЦ-ДЕНЬ, и пустые значения соотв. заполнять нулями, так по крайней мере будет какой-то намёк на корректную сортировку.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы