我需要將日期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」的數字
我需要將日期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」的數字
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
「to_char('02 -Jun-11','yyyymm')」將是壞的代碼 – 2011-06-02 10:39:05
注意到並同意。 – 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')
分享和享受。
你的意思是你必須專門將'03/06/08'轉換成200806或'09/01/2009'到200901? – tofutim 2011-06-02 09:37:41
你爲什麼要用兩位數的年份?是03/06/08相當於1908年3月6日還是2008年3月6日?如果是出生日期,該人是否會拜訪老年醫生或兒科醫生? 20世紀使用了兩位數的年份,但自從2000年修復時代以來,幾乎所有形式的日期都變爲4位數。 – Tim 2011-06-02 11:11:40
您的問題的值爲'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