Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 MM.DD.YY to MM-MON-YY  [new]
Doglexx
Member

Откуда: Одесса
Сообщений: 40
Здравствуйте!
Порыскав по темам форума, не смог найти ответ на свой вопрос.
Сразу говорю, именно с Ораклом знаком относительно недолго, очень надеюсь на Вашу помощь.

Проблема в следующем.
С помощью EXP/IMP. Была перенесена БД с одной машины на другую. БД используется несколькими программами для работы. Пока используются таблицы без дат - всё нормально, как только программа использует таблицу с датой - выскакивает ошибка.

Используяю SQL*Plus я обнаружил, что в ответ на запрос с исходной машины БД возвращает даты в виде DD-MON-YY (например 21-JAN-09), а БД на второй машине в виде DD.MM.YY (например, 21.01.09).

В панели управления на обоих машинах стоит формат отображения даты DD.MM.YYYY.
Смотрел параметры NLS. Вроде всё совпадает.
Как можно исправить проблему представления дат?
Заранее благодарен!
21 янв 09, 13:35    [6715546]     Ответить | Цитировать Сообщить модератору
 Re: MM.DD.YY to MM-MON-YY  [new]
Алымов Анатолий
Member

Откуда: Оренбург
Сообщений: 1309
nls параметры всё таки на машинах отличаются - смотри в реестре или в переменных окружения
21 янв 09, 13:37    [6715578]     Ответить | Цитировать Сообщить модератору
 Re: MM.DD.YY to MM-MON-YY  [new]
Andrey.L
Member

Откуда: Харьков
Сообщений: 1546
Doglexx,

1. Явно приводи к нужному виду to_char(date_column, 'dd.mm.yyyy')
2. alter session set NLS_DATE_FORMAT = 'fmt'
21 янв 09, 13:38    [6715582]     Ответить | Цитировать Сообщить модератору
 Re: MM.DD.YY to MM-MON-YY  [new]
Andrey.L
Member

Откуда: Харьков
Сообщений: 1546
Doglexx
как только программа использует таблицу с датой - выскакивает ошибка.
Скорее всего программа неверно ведет обработку дат. Пинай разработчиков.
21 янв 09, 13:40    [6715599]     Ответить | Цитировать Сообщить модератору
 Re: MM.DD.YY to MM-MON-YY  [new]
Doglexx
Member

Откуда: Одесса
Сообщений: 40
Алымов Анатолий
nls параметры всё таки на машинах отличаются - смотри в реестре или в переменных окружения


Сорри, за элементарные вопросы - в каких именно переменных окружения?
В реестре смотреть где?

Andrey.L
Doglexx
как только программа использует таблицу с датой - выскакивает ошибка.
Скорее всего программа неверно ведет обработку дат. Пинай разработчиков.


Программа понимает дату с исходной машины, но не хочет понимать с той, куда была скопирована база. разработчики недоступны.
21 янв 09, 13:43    [6715629]     Ответить | Цитировать Сообщить модератору
 Re: MM.DD.YY to MM-MON-YY  [new]
Doglexx
Member

Откуда: Одесса
Сообщений: 40
Программа выдаёт ошибку ORA-01722:неверное число.
21 янв 09, 13:45    [6715647]     Ответить | Цитировать Сообщить модератору
 Re: MM.DD.YY to MM-MON-YY  [new]
Legi
Member

Откуда:
Сообщений: 1005
что за программа?

а to_date(SYSDATE,'dd.mm.yyyy') подойдёт? ))
21 янв 09, 14:14    [6715883]     Ответить | Цитировать Сообщить модератору
 Re: MM.DD.YY to MM-MON-YY  [new]
Elic
Member

Откуда:
Сообщений: 29980
Legi
to_date(SYSDATE,'dd.mm.yyyy') подойдёт?
Хватит уже ламерить
21 янв 09, 14:16    [6715897]     Ответить | Цитировать Сообщить модератору
 Re: MM.DD.YY to MM-MON-YY  [new]
guest_2834752634078
Guest
Doglexx
Используяю SQL*Plus я обнаружил, что в ответ на запрос с исходной машины БД возвращает даты в виде DD-MON-YY (например 21-JAN-09), а БД на второй машине в виде DD.MM.YY (например, 21.01.09).

по идее, противоречит
Doglexx
Смотрел параметры NLS. Вроде всё совпадает.


Если отбросить всякую специфику, типа SET переменных, alter session, on-logon и т.п., то

1. Еще раз сверить registry старой и новой машин: HKLM\software\oracle ...
(я так понял, приложение и БД работают на одной машине?)
2. Что-нить почитать, типа: NLS
21 янв 09, 14:26    [6715977]     Ответить | Цитировать Сообщить модератору
 Re: MM.DD.YY to MM-MON-YY  [new]
Doglexx
Member

Откуда: Одесса
Сообщений: 40
guest_2834752634078
Doglexx
Используяю SQL*Plus я обнаружил, что в ответ на запрос с исходной машины БД возвращает даты в виде DD-MON-YY (например 21-JAN-09), а БД на второй машине в виде DD.MM.YY (например, 21.01.09).

по идее, противоречит
Doglexx
Смотрел параметры NLS. Вроде всё совпадает.


Если отбросить всякую специфику, типа SET переменных, alter session, on-logon и т.п., то

1. Еще раз сверить registry старой и новой машин: HKLM\software\oracle ...
(я так понял, приложение и БД работают на одной машине?)
2. Что-нить почитать, типа: NLS


Спасибо большое, за ссылку. Сейчас почитаю.
На всякий случай конфигурации машин -
Win 2003
Oracle 9.2.0.1.0
21 янв 09, 15:09    [6716364]     Ответить | Цитировать Сообщить модератору
 Re: MM.DD.YY to MM-MON-YY  [new]
Doglexx
Member

Откуда: Одесса
Сообщений: 40
[quot guest_2834752634078]

1. Еще раз сверить registry старой и новой машин: HKLM\software\oracle ...
quot]


УРА!!! РАБОТАЕТ!!!!

guest_2834752634078 ОГРОМНОЕ СПАСИБО!!!
А также благодарность всем откликнувшимся!!!!

Проблема была в параметре NLS_LANG(реестр):
HKML\Software\ORACLE\HOME0->NLS_LANG - стоял Russian, а на исходной машине American что влияло, на отображение дат.
21 янв 09, 15:27    [6716534]     Ответить | Цитировать Сообщить модератору
 Re: MM.DD.YY to MM-MON-YY  [new]
guest_2834752634078
Guest
автор
Проблема была в параметре NLS_LANG(реестр):
HKML\Software\ORACLE\HOME0->NLS_LANG - стоял Russian, а на исходной машине American что влияло, на отображение дат.

Мммм....
Ну, суть ты уловил, но почитай все-таки внимательнее ссылку - и обрати внимание на разницу в том, на что влияют NLS_LANGUAGE и NLS_TERRITORY
21 янв 09, 16:01    [6716853]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить