Даты месяца названия языка в Oracle? - PullRequest
3 голосов
/ 20 мая 2011

В моей таблице есть поле varchar, которое содержит дату в формате: Dic 31 1999 12:00AM, которую обычно можно без проблем конвертировать, используя to_date, конфигурирующую 'Mon DD YYYY HH:MIAM'.

Названия месяцев, конечно, могут быть на любом языке. Например, январь будет Jan на английском языке и Ene на испанском языке.

Я считаю, что клиент Oracle выберет локаль машины, чтобы выяснить, какой язык является входящей строкой. Единственная проблема заключается в том, что это не всегда будет работать, если вы являетесь сервером, на котором вы не можете точно знать, откуда берется дата.

Моя текущая проблема заключается в том, что каждый раз, когда я работаю на испанском настольном компьютере и пытаюсь обработать дату с английскими именами месяцев, я получаю сообщение об ошибке «Недействительный месяц».

Есть ли способ, которым я мог бы сказать Oracle, во время выполнения, какой язык я посылаю?

Текущий уродливый обходной путь - это перевод не соответствующих месяцев на испанский.

Ответы [ 3 ]

5 голосов
/ 20 мая 2011

Вы можете использовать SELECT * FROM NLS_SESSION_PARAMETERS, чтобы определить текущие языковые настройки (также существуют NLS_INSTANCE_PARAMETERS и NLS_DATABASE_PARAMETERS).

Используйте NLS_* переменные среды на вашей рабочей станции или ALTER SESSION операторы в вашем сеансе SQL для изменения этих языковых настроек.

3 голосов
/ 05 октября 2017

Вы должны использовать NLS_DATE_LANGUAGE для этого:

select to_char(sysdate, 'dd Month, Day', 'NLS_DATE_LANGUAGE = turkish') from dual
0 голосов
/ 20 мая 2011

ALTER SESSION может работать.Я не помню точно, как, но я знаю, что вы можете установить локали, стили даты и числовые форматы с ним.

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