Вопросы начинающего оракула SQL

Вопрос1: Должен ли я использовать to_date при вводе даты?

INSERT INTO some_table (date1, date2) 
 VALUES (to_date('2012-10-24','YYYY-MM-DD'), to_date('2012-10-24','YYYY-MM-DD'));

Или просто вставить как строку? Будет ли все в порядке? Я пробовал, и это сработало.

INSERT INTO some_table (date1, date2) 
 VALUES ('2012-10-24',2012-10-24');

Question2: Что произойдет, если я не буду называть столбцы, в которые я вставляю? Он работает, но мой вопрос заключается в том, что он вставляет случайно или сейчас занимает порядок столбцов при создании таблицы?

INSERT INTO some_table 
 VALUES ('2012-10-24',2012-10-24');
3 ответа

1, похоже, работает только с форматом "YYYY-MM-DD": http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements003.htm#SQLRF51049 говорит

Вы можете указать значение DATE в виде строкового литерала... чтобы указать значение DATE в качестве литерала, вы должны использовать григорианский календарь. Вы можете указать литерал ANSI... Литерал даты ANSI не содержит временной части и должен быть указан в формате "YYYY-MM-DD".

Однако это может со временем работать, если вы используете

В качестве альтернативы вы можете указать значение даты Oracle... Формат даты по умолчанию для значения DATE для Oracle задается параметром инициализации NLS_DATE_FORMAT.

Для вопроса 2 он использует порядок при определении таблицы. Однако в этом случае вы должны указывать значения для всех столбцов.


Oracle поддерживает стандартные словарные даты SQL (начиная с 9i).

Это DATE, за которым следует строка с форматом "yyyy-mm-dd"

DATE '2014-05-10'

Он намного короче, чем TO_DATE, и он не зависит от настроек NLS.

Аналогично для временных меток:

TIMESTAMP '2014-05-10 09:52:35'

Что касается вашего второго вопроса: это порядок столбцов, определенный в CREATE TABLE.


Вы могли бы сделать это так:

ALTER SESSION SET NLS_DATE_FORMAT = 'MM:YYYY:DD';
INSERT INTO some_table (date1) VALUES ('05:2014:10');

... но делать это, как это не рекомендуется. Используйте TO_DATE или DATE Literal, например DATE '2014-05-10'. Это облегчает вашу жизнь.

licensed under cc by-sa 3.0 with attribution.