【问题标题】:Convert 'DD-MM-YY' to 'Month Year' oracle将 'DD-MM-YY' 转换为 'Month Year' oracle
【发布时间】:2020-06-08 12:40:22
【问题描述】:

我有一个日期字段,它以'19-JAN-20' 格式显示日期我想使用oracle 数据库将其显示为'January 2019'

select '19-JAN-19' FROM DUAL

【问题讨论】:

    标签: sql oracle date


    【解决方案1】:

    您需要使用TO_CHAR以所需格式显示:

    select to_char(DATE '2019-01-20', 'Month YYYY') dt from dual;
    
    DT           
    -------------
    January  2019
    

    从 DUAL 中选择“19-JAN-19”

    该声明有几个问题:

    1. '19-JAN-19' 是字符串,而不是日期。始终使用 TO_DATE 将其显式转换为日期,或者像我在演示中使用的那样坚持 ANSI 日期文字

    2. 不要使用 两位数 YY 表示年份,这就是引入 Y2K 错误的原因。始终使用YYYY

    【讨论】:

      【解决方案2】:

      看起来像嵌套的TO_CHAR,如果您提到的“日期”值 - 19-JAN-20 存储为字符串:

      SQL> with test (col) as
        2    (select '19-JAN-20' from dual)
        3  select
        4    to_char(
        5      to_date(col, 'dd-mon-yy', 'nls_date_language = english'),
        6      'fmMonth yyyy', 'nls_date_language = english'
        7      ) result
        8  from test;
      
      RESULT
      --------------
      January 2020
      
      SQL>
      

      如果您的数据库英语,您可以省略 NLS_DATE_LANGUAGE 部分(我说克罗地亚语,所以我把它包括在内)。


      但是,如果它是一个 日期,您只想以不同的方式显示,那么:

      (只是为了避免在TO_DATE中出现NLS_DATE_LANGUAGE):

      SQL> alter session set nls_date_language = 'english';
      
      Session altered.
      

      我的数据库中的默认格式:

      SQL> select sysdate from dual;
      
      SYSDATE
      --------
      08.06.20
      

      将会话更改为所需的格式:

      SQL> alter session set nls_date_format = 'fmMonth yyyy';
      
      Session altered.
      
      SQL> select sysdate from dual;
      
      SYSDATE
      --------------
      June 2020
      

      或者,应用带有所需格式掩码的TO_DATE 函数:

      SQL> select to_char(sysdate, 'fmMonth yyyy') result from dual;
      
      RESULT
      --------------
      June 2020
      
      SQL>
      

      【讨论】:

        猜你喜欢
        • 2014-11-26
        • 1970-01-01
        • 2012-01-27
        • 1970-01-01
        • 2013-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-26
        相关资源
        最近更新 更多