Какой самый идеальный подход для проверки значений даты с Oracle - PullRequest
0 голосов
/ 19 марта 2019

Определенный столбец моей таблицы - hour_init, а другой - hour_end. Я пытаюсь создать проверочное ограничение, которое определяет, следует ли как hour_init, так и hour_end следующим правилам:

  • Правило 1: формат должен быть ЧЧ: ММ
  • Правило 2: ЧЧ должно быть меньше 24
  • Правило 3: ММ должно быть меньше 59

Я прочитал и / или выяснил некоторые подходы, но я не могу решить, какой будет "лучшая практика" или идеальное решение.

Подход 1:

Создайте таблицу с 2 столбцами типа varchar2. Создайте проверочное ограничение, которое разбивает каждый varchar2 на подстроки (после и до ":"), приведите подстроки в числа и проверьте, соответствуют ли они правилу 2 и 3. Я не знаю, насколько плох или хорош этот метод.

Подход 2:

Создать таблицу с 2 столбцами типа DATE или TIMESTAMP. Затем отформатируйте эти ДАТЫ в ЧЧ: ММ, а затем проверьте, вставлено ли значение, его часы и минуты соответствуют правилу 2 и 3.

Какой подход следует выбрать?

Ответы [ 2 ]

1 голос
/ 19 марта 2019

По моему мнению, НИКОГДА не храните значения даты (или времени) в столбцах VARCHAR2. Нет преимуществ, много недостатков.

0 голосов
/ 20 марта 2019

если вы создаете столбцы как DATE или какой-либо вариант TIMESTAMP, (в зависимости от необходимой детализации) проверять нечего.Oracle не позволит вам ввести недопустимое значение в один из этих типов данных.Это одна из многих причин, по которой вам НИКОГДА не следует использовать varchar2 или число для сохранения даты / времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...