Переопределить дату локали с пользовательскими настройками. - PullRequest
1 голос
/ 11 апреля 2010

Помимо поддержки GL, есть ли способ переопределить настройки локали с помощью пользовательских значений для месяца и дня при использовании mmm-dd-yyyy, модифицированных испанских примеров: Jan = ENE, Aug = AGO или длинные даты (mmmm) Январь = ENERO, август = AGOSTO или (dddd) понедельник = LUNES, четверг = JUEVES и т. Д.?

Ответы [ 3 ]

1 голос
/ 12 апреля 2010

Существует несколько способов сделать это в Informix, но большинство из них работают через средства GLS. Ваш вопрос не дает понять, каков ваш сценарий; Там могут быть разные ответы в зависимости от того, что вы пытаетесь сделать. Сценарии, которые я вижу, включают:

  1. У вас есть настройки системы, скажем, с CLIENT_LOCALE = en_us.8859-15, но вы хотите видеть даты, отформатированные так, как будто действует CLIENT_LOCALE = es_es.8859-15.
  2. У вас действует испанская настройка, но вам не нравятся значения, которые она предоставляет, и вы хотите использовать альтернативные имена
  3. У вас действует испанская настройка, но вы хотите, чтобы даты были отформатированы иначе, чем формат по умолчанию.

Другим важным фактором в уравнении является значение DB_LOCALE, совпадающее с языковым стандартом клиента.

Кроме того, вы должны определить, что вы используете в качестве клиентского API - опять же, могут быть разные ответы в зависимости от того, что вы используете, а также от того, как вы обрабатываете даты через API (вы получите разные результаты, если спросите Например, API для возврата DATE в виде строки, а не в виде собственного 4-байтового целого числа со знаком: в первом случае код клиентского API выполнит преобразование в строку автоматически, во втором код вашего приложения может использовать клиентский API функции для форматирования значения под вашим контролем).

IDS имеет обширный набор функций для обработки форматирования значений DATE. К ним относятся:

  • ДАТА
  • СЕГОДНЯ
  • MDY
  • день
  • МЕСЯЦ
  • год
  • WEEKDAY
  • TO_CHAR
  • TO_DATE
  • ADD_MONTHS
1 голос
/ 11 апреля 2010

В Oracle:

SQL> alter session set nls_date_format = 'DAY, DD-MONTH-YYYY'
  2  /

Session altered.


SQL> alter session set nls_language='SPANISH'
  2  /

Session altered.


SQL> select sysdate as today, trunc(sysdate,'YYYY') as nyd from dual
  2  /

TODAY                         NYD
----------------------------- -----------------------------
DOMINGO  , 11-ABRIL     -2010 VIERNES  , 01-ENERO     -2010

SQL>
0 голосов
/ 11 апреля 2010

По крайней мере, в SQL Server вы можете использовать оператор SET LANGUAGE для установки языка на один из языков, поддерживаемых в списке sys.syslanguages

SET LANGUAGE N'Spanish'

--mmm-dd-yyyy,
Select Left(DateName(mm, GetDate()),3)
    + '-' + Right('0' + Cast(DatePart(dd,GetDate()) As Varchar(2)), 2)
    + '-' + Cast(DatePart(yyyy, GetDate()) As char(4))

Обратите внимание, что нет встроенной функции форматирования даты, которая будет возвращать формат mmm-dd-yyyy, поэтому вы должны создать ее самостоятельно.

...