Нам нужно сохранить 00-00-00 в виде даты в столбце Oracle. Но Oracle не позволяет.Значение столбца даты в Oracle как 0000
Есть ли альтернативные представления или способы их хранения?
Нам нужно сохранить 00-00-00 в виде даты в столбце Oracle. Но Oracle не позволяет.Значение столбца даты в Oracle как 0000
Есть ли альтернативные представления или способы их хранения?
Oracle действительно позволяет делать вставки даты 1 января 1AD:
INSERT INTO table_name (date_column) VALUES (DATE '0001-01-01');
Я не знаю, если это уместно, но я был когда-то «требуется» для сохранения 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')
или значения заграждения. Значение за один день может быть «2016-06-01 -> 2016-06-02', а значение за месяц может быть« 2016-06-01 -> 2016-07-01' * (с использованием -exclusive- конечное значение, а не включительно, упрощает математику, а также допускает любую степень детализации: '2016-06-01 12:00 -> 2016-06-01 13: 00' в течение часа) *. – MatBailie
Это, кажется, плохая идея. Используйте NULL для неизвестного/не заданного. – jarlh
Что означает это значение? Это не действительная дата. –
И Oracle абсолютно прав, потому что в григорианском календаре нет месяца «ноль» и нет «нулевого» дня (не знаю о других). Почему вы хотите хранить что-то подобное? Что не просто хранить 'NULL'? –