2016-06-01 2 views
-1

Нам нужно сохранить 00-00-00 в виде даты в столбце Oracle. Но Oracle не позволяет.Значение столбца даты в Oracle как 0000

Есть ли альтернативные представления или способы их хранения?

+8

Это, кажется, плохая идея. Используйте NULL для неизвестного/не заданного. – jarlh

+7

Что означает это значение? Это не действительная дата. –

+3

И Oracle абсолютно прав, потому что в григорианском календаре нет месяца «ноль» и нет «нулевого» дня (не знаю о других). Почему вы хотите хранить что-то подобное? Что не просто хранить 'NULL'? –

ответ

3

Oracle действительно позволяет делать вставки даты 1 января 1AD:

INSERT INTO table_name (date_column) VALUES (DATE '0001-01-01'); 
0

Я не знаю, если это уместно, но я был когда-то «требуется» для сохранения 0-го апреля 1996 года, 0th 1996 и т.д. Требование real состояло в том, что это были финансовые операции, которые не могли быть назначены на один день или месяц соответственно (например, журнальные ваучеры).

Решение должно было использовать настоящие даты (1 апреля 1996 года, 1 января 1996 года) и добавить еще один столбец, который дал «объем» записи - «D», «M», «Q», Y».

Так что если все транзакции за 1 апреля 1996 года были необходимы, предикат date_scope = 'D' можно было бы добавить в my_date = date '1996-04-01', чтобы гарантировать, что были восстановлены только ежедневные транзакции.

Если требуются все операции за апрель 1996 года ...

my_date between date '1996-04-01' and date '1996-04-30' and 
date_scope in ('D','M') 
+0

или значения заграждения. Значение за один день может быть «2016-06-01 -> 2016-06-02', а значение за месяц может быть« 2016-06-01 -> 2016-07-01' * (с использованием -exclusive- конечное значение, а не включительно, упрощает математику, а также допускает любую степень детализации: '2016-06-01 12:00 -> 2016-06-01 13: 00' в течение часа) *. – MatBailie

Смежные вопросы