使用自定义设置覆盖区域设置日期。

时间:2010-04-11 16:27:27

标签: sql-server oracle db2 informix

除了GL支持之外,还有一种方法可以使用mmm-dd-yyyy修改西班牙语示例时使用自定义值覆盖区域设置:Jan = ENE,Aug = AGO或长日期(mmmm) 1月= ENERO,8月= AGOSTO,或者(dddd)星期一= LUNES,星期四= JUEVES等?

3 个答案:

答案 0 :(得分:1)

在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>

答案 1 :(得分:1)

在Informix中有很多方法可以做到这一点,但大多数方法都是通过GLS工具完成的。您的问题并没有说明您的方案是什么;根据您的尝试,可能会有不同的答案。我可以看到的场景包括:

  1. 您有一个系统设置,例如,CLIENT_LOCALE = en_us.8859-15,但您希望看到格式化的日期,就像CLIENT_LOCALE = es_es.8859-15生效一样。
  2. 您的西班牙语设置生效但您不喜欢它提供的值并希望使用其他名称
  3. 您的西班牙语设置生效但您希望查看的格式与默认格式不同。
  4. 等式中的另一个重要因素是DB_LOCALE是否设置为与客户端区域设置相同。

    此外,您应该确定您正在使用的客户端API - 再次,根据您使用的内容可能会有不同的答案,以及您如何通过API处理日期(如果您询问,您会得到不同的结果例如,API将DATE作为字符串而不是本机4字节有符号整数返回;在第一种情况下,客户端API代码将自动转换为字符串;在第二种情况下,您的应用程序代码可以使用客户端API用于格式化您控制下的值。)

    IDS有一组广泛的函数来处理DATE值的格式。其中包括:

    • DATE
    • TODAY
    • MDY
    • YEAR
    • WEEKDAY
    • TO_CHAR
    • TO_DATE
    • ADD_MONTHS

答案 2 :(得分:0)

至少在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格式,因此您必须自己构建。