2011-06-02 57 views
-1

我需要將日期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

回答

1
​​

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

2
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; 

心領神會形成這種

1

不知道你想什麼通過提到的查詢來實現,但是您需要將其修改爲 這個

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

OR

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

嘗試以下操作:

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

分享和享受。