TIMESTAMP (6) Вставка Oracle - PullRequest
       36

TIMESTAMP (6) Вставка Oracle

3 голосов
/ 18 марта 2012

Я генерирую фиктивные данные для базы данных, один атрибут использует TIMESTAMP(6).

Может кто-нибудь дать мне пример того, как выглядит значение?

Также я хотел бы бытьвозможность вставить дату вдоль

, т.е. 03/18/2012 02:35 AM

, чтобы она выглядела как

INSERT INTO FLIGHT VALUES (1,'London Heathrow','Miami Airport','03/18/2012 02:35 AM','04/18/2012 13:35 PM');

Возможно ли это?Большое спасибо ...

РЕДАКТИРОВАТЬ ----

Как мне избавиться от огромного пространства столбца метки времени

space

Ответы [ 2 ]

8 голосов
/ 18 марта 2012

Всякий раз, когда вы имеете дело с типами данных DATE или TIMESTAMP, вы всегда должны вставлять значения DATE или TIMESTAMP.Вы не должны вставлять строки и полагаться на неявные преобразования для преобразования строки в DATE или TIMESTAMP.Вы должны явно звонить TO_DATE или TO_TIMESTAMP.Ваш оператор INSERT должен также явно указывать имена столбцов, в которые вы вставляете.

Вы бы хотели, чтобы ваш оператор INSERT выглядел примерно так

INSERT INTO FLIGHT( <<list of columns>> )
  VALUES (1,
         'London Heathrow',
         'Miami Airport',
         to_timestamp( '03/18/2012 02:35 AM', 'MM/DD/YYYY HH:MI AM'),
         to_timestamp( '04/18/2012 13:35 PM', 'MM/DD/YYYY HH:MI AM') );

Вы можете настроить отображение SQL * Plus данных в определенном столбце, изменив маску формата.Например,

SQL> column dept_time format a30;
SQL> column arrv_time format a30;

заставит SQL * Plus отображать DEPT_TIME и ARRV_TIME в 30 горизонтальных символах (ваш текущий NLS_TIMESTAMP_FORMAT генерирует 28 строк символов, если вы измените NLS_TIMESTAMP_FORMAT, вы можете изменить ширину столбца, который запрашивается для отображения SQL * Plus).

1 голос
/ 10 октября 2013

Пожалуйста, посмотрите на следующий пример:

ALTER SESSION SET nls_timestamp_format = 'YYYY-MM-DD HH24:MI:SS';

SELECT *
FROM orders 
WHERE ordered_at 
   BETWEEN '2013-10-06 12:00:00' 
       AND '2013-10-06 16:00:00'
...