Невозможно вставить дату и время при использовании типа данных даты - PullRequest
0 голосов
/ 19 января 2012

У меня возникла небольшая проблема при использовании типа данных date.При попытке сохранить строку в таблице, где поле выдает ошибку ora 01830 и жалуется на то, что преобразование формата даты заканчивается рисунком ... и т. Д.Теперь, когда я делаю вставку, я использую функцию to_date в формате «dd-mon-yyyy hh24: mi: ss».Конечно, когда я удаляю элемент времени, все идеально.

Проверяя sysdate, я заметил, что элемент времени не отображался, и я использовал alter session set nls_date_format, чтобы установить желаемую дату и времячтобы сохранить в таблицу, которая сработала!

Я использовал alter system set nls_date_format = "dd-mon-yyyy hh24: mi: ss" scope = spfile;Это показало, что оно было изменено, и я вижу настройки в консоли управления предприятием.В sqlplus я отключил базу данных и перезапустил ее при запуске mount;изменить базу данных открытых;и затем, выбрав sysdate, он все равно показывает дату как dd-mon-yy, и все равно нет времени!При проверке управления предприятием и поиске nls_date_format параметр по-прежнему отображается как «dd-mon-yyyy hh24: mi: ss».

Итак, мой вопрос: что я делаю неправильно?Почему нельзя сохранить дату и время, используя дату в Oracle 11g ?????

Спасибо

Ответы [ 2 ]

1 голос
/ 19 января 2012

Даты хранятся со «второй» гранулярностью в Oracle.

Форматы отображения зависят от системы и сеанса. В вашем случае, так как вы подключаетесь с помощью sqlplus, вы используете формат сеанса по умолчанию от клиента, который не включает время. Вам необходимо выполнить:

ALTER SESSION SET nls_date_format ="dd-mon-yyyy hh24:mi:ss";

при запуске клиента sqlplus для изменения отображения по умолчанию. Существует файл на стороне клиента (glogin.sql?), Который sqlplus будет запускать при запуске. Вы можете поместить туда такую ​​команду, если хотите, чтобы она выполнялась при каждом запуске этого клиента. Я почти уверен, что клиент sqlplus при запуске отправляет «alter session set nls_date ...».

В общем, при выводе дат я думаю, что лучше просто указывать формат в формате TO_CHAR (myDateColumn, "dd-mon-yyyy hh24: mi: ss"). Если вы читаете даты программно, вам не нужно об этом беспокоиться, поскольку вы имеете дело с внутренними форматами, а не с форматами отображения.

0 голосов
/ 21 января 2012

Я видел эту ошибку, когда входные данные не соответствовали используемому формату даты. проверь, данные будут моим предложением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...