代码之家  ›  专栏  ›  技术社区  ›  Joe R.

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

  •  1
  • Joe R.  · 技术社区  · 15 年前

    除了GL支持之外,在使用mmm dd yyyy、修改后的西班牙语示例:jan=ene、aug=ago或long dates(mmmm)jane=enero、august=agosto或(dddd)monday=lunes、thursday=jueves等时,是否可以使用自定义值覆盖区域设置?

    3 回复  |  直到 12 年前
        1
  •  1
  •   Jonathan Leffler    15 年前

    在Informix中有许多方法可以做到这一点,但大多数方法都是通过GLS设施工作的。你的问题并不能说明你的场景是什么;根据你想做什么,可能会有不同的答案。我看到的场景包括:

    1. 您有一个系统设置,例如,client_locale=en_us.8859-15,但是您希望看到日期的格式,就像client_locale=es_es.8859-15有效一样。
    2. 西班牙设置已生效,但您不喜欢它提供的值,并希望使用其他名称
    3. 西班牙设置已生效,但您希望看到的日期格式与默认格式不同。

    公式中的另一个重要因素是是否将db_locale设置为与客户机locale相同。

    另外,您应该确定您使用的是什么作为客户端API——同样,根据您使用的是什么,以及您如何通过API处理日期,可能会有不同的答案(如果您要求API以字符串而不是以本机4字节签名的形式返回日期,则会得到不同的结果例如,整数;在第一种情况下,客户机API代码将自动进行字符串转换;在第二种情况下,您的应用程序代码可以使用客户机API函数来格式化您控制的值)。

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

    • 日期
    • 今天
    • 米迪
    • 月份
    • 工作日
    • 到\char
    • 结束日期
    • 添加月份
        2
  •  1
  •   APC    15 年前

    在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>
    
        3
  •  0
  •   Thomas    15 年前

    至少在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 格式化,所以您必须自己构建它。