【问题标题】:Need to convert a date 09/01/2009 to a CHAR TYPE FORMAT需要将日期 09/01/2009 转换为 CHAR TYPE FORMAT
【发布时间】:2011-06-02 09:32:47
【问题描述】:

我需要将日期 09/01/2009 转换为 CHAR TYPE FORMAT。结果应为 6 位。

我知道 TO_CHAR 函数可以做到这一点,但它对我不起作用。

日期为 03/06/08

SELECT TO_CHAR(030608, 'DD MONTH,YYYY')
 FROM dual;

这主要给出错误语法。

这是 Oracle 数据库,我必须得到 STRING。例如像 -'200901' 这样的数字

【问题讨论】:

  • 您的意思是您必须将 '03/06/08' 转换为 200806,还是将 '09/01/2009' 转换为 200901?
  • 为什么要使用两位数的年份? 03/06/08 是否相当于 1908 年 3 月 6 日或 2008 年 3 月 6 日?如果是出生日期,那个人会去看老年病学家或儿科医生吗? 20 世纪使用两位数的年份,但自从 2000 年整治时代以来,几乎所有表格上的所有日期都变成了 4 位数。
  • 您的问题的值是“09/01/2009”(可能是 dd/mm/yyyy 或 mm/dd/yyyy)、“03/06/08”(可能是YY MM 和 DD 以任意顺序排列)、“200901”(可能是 YYYYMM、YYMMDD 或 YYDDMM)和格式掩码“DD MONTH, YYYY”,它与问题中的任何值都不对应。

标签: sql oracle date


【解决方案1】:
SQL> -- Examples of the conversion functions.
SQL> SET SERVEROUTPUT ON
SQL> DECLARE
  d1    DATE;  
  d2    DATE; 
  d3    DATE;
  d4    DATE;
BEGIN
  d1 := TO_DATE('1/1/02','mm/dd/yy');      
  d2 := TO_DATE('1-1-1998','mm-dd-yyyy');
  d3 := TO_DATE('Jan 1, 2000','mon dd,yyyy');
  d4 := TO_DATE('1/1/02','mm/dd/rr');

  DBMS_OUTPUT.PUT_LINE('d1 = ' || TO_CHAR(d1,'dd-Mon-yyyy'));
  DBMS_OUTPUT.PUT_LINE('d2 = ' || TO_CHAR(d2,'mm/dd/yyyy'));
  DBMS_OUTPUT.PUT_LINE('d3 = ' || TO_CHAR(d3,'Day, Month dd, yyyy'));
  DBMS_OUTPUT.PUT_LINE('d4 = ' || TO_CHAR(d4,'Dy, Mon dd, yyyy'));

END;

从这里获取提示

【讨论】:

    【解决方案2】:

    不确定您要通过提到的查询实现什么,但您需要将其修改为 这个

    select to_char(to_date('03062008','ddmmyyyy'),'yyyymm') from dual;
    

    select to_char(to_date('030608','ddmmyy'),'yyyymm') from dual;
    

    【讨论】:

      【解决方案3】:
      to_char(sysdate, 'yyyymm'); would return '201106'
      

      Oracle 的默认日期格式是“DD-MON-YY”。要转换特定日期,您可以编写

      to_char('02-Jun-11', 'yyyymm'); should return '201106'
      

      但更好:

      to_char(to_date('09/01/2009', 'dd/mm/yyyy'), 'yyyymm'); should return '200901'
      

      http://infolab.stanford.edu/~ullman/fcdb/oracle/or-time.html

      【讨论】:

        【解决方案4】:

        尝试以下方法:

        Input      Desired output  How to get there
        030608     '03/06/2008'    TO_CHAR(030608, 'DD/MM/YYYY')
        '030608'   '03/06/2008'    TO_CHAR(TO_DATE('030608', 'DDMMYY'), 'DD/MM/YYYY')
        

        分享和享受。

        【讨论】:

          猜你喜欢
          • 2021-02-17
          • 2018-09-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-11
          • 2011-04-19
          相关资源
          最近更新 更多