Как отличить дату в полночь от даты без времени в Oracle? - PullRequest
1 голос
/ 12 мая 2010

Я бы хотел отличить дату в полночь (то есть «12/05/2010 00:00:00») от даты без указания времени (то есть «12/05/2010»). Это значение предоставляется пользователем, иногда важна только дата, иногда это дата и время, и позже ожидается, что приложение будет показывать время только тогда, когда оно было явно указано. Так что для следующих входов я бы ожидал следующих выходов:

  • за '12/05/2010' я бы ожидал '12 / 05/2010 '
  • за '05.05.2010 09:23' Я бы ожидал '12/05/2010 09: 23'
  • за '12/05/2010 00:00' Я ожидал '12 / 05/2010 00: 00 '

Я знаю, что могу смоделировать это в двух отдельных столбцах, дате и времени, но мне было интересно, есть ли способ обработать это в одном столбце даты?

1 Ответ

1 голос
/ 12 мая 2010

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

  User supplied value       Inserted value

  12/05/2010                12/05/2010 BC
  12/05/2010 09:23          12/05/2010 09:23
  2/05/2010 00:00           2/05/2010 00:00

При выборе значения даты, если год является годом до нашей эры, пользователь пропустил компонент времени.

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

...