需要将日期09/01/2009转换为CHAR类型格式

问题描述:

我需要将日期09/01/2009转换为CHAR类型格式。结果应该有6位数字。需要将日期09/01/2009转换为CHAR类型格式

我知道TO_CHAR函数做它,但它不适合我。

日期是给定为08年3月6日

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

这给了错误的语法为主。

这是Oracle数据库,我必须得到STRING。例如,一个类似“-200901”的数字

+0

你的意思是你必须专门将'03/06/08'转换成200806或'09/01/2009'到200901? – tofutim 2011-06-02 09:37:41

+0

你为什么要用两位数的年份?是03/06/08相当于1908年3月6日还是2008年3月6日?如果是出生日期,该人是否会拜访老年医生或儿科医生? 20世纪使用了两位数的年份,但自从2000年修复时代以来,几乎所有形式的日期都变为4位数。 – Tim 2011-06-02 11:11:40

+1

您的问题的值为'09/01/2009'(可能是dd/mm/yyyy或mm/dd/yyyy),'03/06/08'(可能是任何顺序的YY MM和DD ),'200901'(可能是YYYYMM,YYMMDD或YYDDMM)和格式掩码'DD MONTH,YYYY',它不符合问题中的任何值。 – 2011-06-03 00:00:41

​​

Oracle的DATE默认格式为“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

+0

“to_char('02 -Jun-11','yyyymm')”将是坏的代码 – 2011-06-02 10:39:05

+0

注意到并同意。 – tofutim 2011-06-02 11:03:20

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; 

心领神会形成这种

不知道你想什么通过提到的查询来实现,但是您需要将其修改为 这个

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

OR

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

尝试以下操作:

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') 

分享和享受。