Давайте проведем небольшой анализ затрат / выгод, не так ли?
Оставьте поле "дата" как VARCHAR2
Плюсы:
- Ноль вычисленийстоимость при форматировании даты в отчете (поскольку она всегда отображается в формате
MM-DD-YYYY
).
Минусы:
- Невозможно проиндексировать (ну, в хронологический смысл)
- Увеличение числа поисковых запросов увеличивается из-за
TO_DATE
вызовов - Требуется дополнительное вычисление, если дата должна отображаться в другом формате принекоторый отчет (например:
TO_CHAR(TO_DATE(date_column, 'MM-DD-YYYY'), 'DD-MON-YYYY')
) - Столбец не требует, чтобы все значения соответствовали определенному формату даты, увеличивая риск сбоя, если необходимо
TO_DATE
.
Измените поле "дата" на DATE
Плюсы:
- Можно выполнять поиск без издержек
TO_DATE
- Можно индексировать
- «Плохие» значения не могут быть вставлены (хотя даты могут все еще не иметь смысла с точки зрения бизнеса)
- Может быть легко отформатирован
Минусы:
- Я не могу думать ни о чем из головы
Надеюсь, это поможет в вашем конкретном решении с технической точки зрения.Всегда есть перспектива бизнес (или офисная политика ):
измерение даты необязательно
Я будуисправим это для вас:
измерение даты необязательно пока
Предположим, вы покидаете столбец как VARCHAR2
и клиент приходит и просит отфильтровать некоторый отчет по этому полю даты.Предположим, это убивает сервер базы данных, и вам, наконец, нужно преобразовать его в DATE
.Относительно легко сделать это изменение в производственной среде в вашей компании?Есть ли много бюрократизма, форм и панелей управления, с которыми вы должны бороться, чтобы внести свои простые изменения?Если вам do удается преодолеть эти препятствия, уверены ли вы, что все даты хранятся в одном и том же формате?