Наш класс java вызывает PLSQL-процесс, который возвращает дату в формате по умолчанию, который определяется NLS_DATE_FORMAT. Наше приложение устанавливает свой собственный язык для интернационализации, но я хочу, чтобы формат даты оставался просто «DD-MON-RR», который является en_US Locale NLS_DATE_FORMAT. Из-за изменения выбранной строки даты, выбранной в окошко, и последующих вызовов функции TO_DATE() не выполняется. Я попытался исправить это, изменив Locale to Locale.setDefault(new Locale("en","US")); //"en_US"
в классе java, и он отлично работает, но часть интернационализации больше не работает. Я в Сингапуре, поэтому мой Locale - "en_SG"
и формат даты, который предполагает оракул после установки NLS_TERRITORY: SINGAPORE
- NLS_DATE_FORMAT:'DD/MM/RR'
. Я запрашиваю сервер для V $ NLS_PARAMETERS, и формат даты по умолчанию - «DD-MON-RR». Итак, мой вопрос: могу ли я установить NLS_DATE_FORMAT, не затрагивая настройки локали приложения. Или я могу заставить драйвер jdbc полностью игнорировать настройки NLS клиента?Как установить формат даты NLS без установки Locale
ответ
Yo можно использовать to_char
функцию для форматирования даты, как вы хотите, также вы можете включить третий параметр в to_char
функции для обозначения локаль используется:
select to_char(sysdate, 'DY-MM-YYYY', 'NLS_DATE_LANGUAGE=AMERICAN') from dual;
Более подробную информацию о форматах дат можно найти в SQL Reference.
Я вроде финализации на i18n вещи для моего приложения, и мой дизайн основан на предположениях ниже)
1) Locale.setDefault (новый Locale («ан», «US»)); плохо, поскольку вы меняете стандартную локаль для JVM, а не только для своего приложения. Поэтому лучше передать локаль вокруг приложения на основе запроса (может быть threadlocal)
2) Обрабатывать все форматирование/синтаксический анализ i18n на уровне приложения. БД должна обрабатывать только сравнения (необязательно), сортировку (необязательно) и хранение. Поэтому просто установите NLS_CHARACTERSET, NLS_COMP, NLS_SORT и NLS_LENGTH_SEMANTICS. Кстати, сравнение и сортировка на уровне db означает создание индексов, специфичных для локали, таким образом замедляя вставки/обновления.
Да, ваша первая точка верна. Для второй точки у нас есть форматирование i18n в интерфейсе, но процедура возвращает данные из строки из процедуры oracle. Более простой код, как формируется строка, подобен 'select 'MKDT' || lpad (nvl (length (por.maker_date), 0), 3, '0') || por.maker_date данные из TABLEXYZ;' Я предполагаю, что это строка автоматически вызывает 'TO_CHAR (
- 1. Locale и конкретный формат даты с Moment.js
- 2. IOS, как установить формат даты
- 3. Установить стандартный формат даты
- 4. Установить формат даты выборщик
- 5. Yii2: Как установить MySQL Locale
- 6. Формат даты без тире?
- 7. Формат даты - без времени?
- 8. Формат даты без года
- 9. Что такое формат даты по умолчанию SQlite и WinRT (Locale)
- 10. Как установить формат даты в Rails
- 11. as.Date возвращает NA после установки C locale
- 12. Установить формат даты для ui.boostrap.datepicker
- 13. Установить формат даты, сцепляются шпагатом
- 14. Формат даты в андроиде, когда locale is arabic
- 15. Переопределить формат даты и времени Locale, на уровне JVM
- 16. Установить формат даты Objective-C
- 17. Как установить формат переменной даты Eclipse?
- 18. angular.ui DatePicker как установить формат даты?
- 19. Как установить формат даты в моем случае
- 20. Как установить формат даты из формы VB.NET
- 21. Как установить формат даты для ярлыка?
- 22. Как установить формат даты на iPhone
- 23. PHPExcel: как установить формат даты для ячейки
- 24. Как установить формат даты, извлеченный из UIDatePicker
- 25. Как установить формат даты в php
- 26. mongoose как установить формат даты в модели
- 27. Как установить формат даты для nginx $ date_local
- 28. Как установить формат даты в sybase?
- 29. Как установить формат как час в babel.dates.format_date?
- 30. Как изменить формат дату установки Эталонного типа данных даты
О да, на самом деле я мог бы использовать 'TO_CHAR (sysdate, 'DD-MON-RR')' в PLSQL if это было возможно в моем случае. Но мой проект перестраивает часть старого кода PRO C * в java. Поэтому каждый хочет оставить части PL/SQL неизменными, поскольку в настоящее время он работает нормально. Проблема возникла, поскольку код PRO C * лежит на том же компьютере, что и в базе данных, поэтому они выполняют те же настройки NLS. Но этот Java-класс может быть частью сервера приложений, и в будущем он, скорее всего, перейдет в веб-службу. Поэтому я хочу сохранить существующие настройки Locale, так как приложение также отлично работает в настоящее время. –