需要将日期09/01/2009转换为CHAR TYPE FORMAT

时间:2011-06-02 09:32:48

标签: sql oracle date

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

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

日期为03/06/08

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

这主要是语法错误。

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

这样的数字

4 个答案:

答案 0 :(得分: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 :(得分:1)

to_char(sysdate, 'yyyymm'); would return '201106'

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

答案 2 :(得分:1)

不确定您要通过上述查询尝试实现的目标,但您需要将其修改为 此

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

OR

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

答案 3 :(得分: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')

分享并享受。