@sflyer

Oracle 10g, ora-01843, как настроить дату?

Сразу хочу сказать, в оракле я не профессионал, но чтение мануалов и поиск в гугле не помогли.
Проблема - поднял новый сервер oracle 10g, залил данные.
При попытке взаимодействия с данными получаю ошибку - ora-01843 (не валидный месяц).

У данных дата выглядит вот так: 19-DEC-07.
Делаю команду:
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YY';

Потом:
SELECT TO_DATE('20-DEC-07') FROM TABLE;
Получаю результат
ORA-01843: месяц не верен.

В итоге два вопроса:
1) Какой формат данных должен быть для данной как пример даты?
2) Каким образом записать информацию о формате даты в базу, чтобы после перезагрузки сервера настройка не слетала?
  • Вопрос задан
  • 3905 просмотров
Решения вопроса 1
@protven
Сделайте "select sysdate from dual;" Я думаю у вас там месяцы просто по русски называются. Вообще я обычно чтобы этого избежать, использую настройки nls_date что-то типа "DD-MM-YYYY". Месяцы будут цифрами.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Ke1eth
software engineer
1) ALTER SESSION SET NLS_DATE_FORMAT = 'MM-MON-YY';
Прямо: MM-MON-YY? т.е. месяц-месяц-год

2) Проще указывать формат в самом to_date
SELECT TO_DATE('20-DEC-07', 'MM-MON-YY') FROM TABLE;


3) Насколько я помню аббревиатура зависит от NLS_LANG на клиенте, т.е. проверьте:
SELECT TO_DATE('20-Дек-07', 'DD-MON-YY') FROM TABLE;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы