将oracle日期字符串转换为数字

将oracle日期字符串转换为数字,oracle,Oracle,我需要将日期字符串--“2013-01-01”转换为数字--20130101类型。我如何在Oracle中高效地完成它 My Input- '2013-01-01' My Output Output-20130101 这只是在此处使用带日期的字符的基础。您还可以“利用”格式掩码: select to_number(replace('2013-01-01', '-')) from dual; select to_number('2013-01-01', '9999G9

我需要将日期字符串--“2013-01-01”转换为数字--20130101类型。我如何在Oracle中高效地完成它

    My Input-

'2013-01-01'

   My Output

    Output-20130101
这只是在此处使用带日期的字符的基础。

您还可以“利用”格式掩码:

select to_number(replace('2013-01-01', '-')) from dual;
select to_number('2013-01-01', '9999G99G99', 'nls_numeric_characters=,-')
from dual

您可以将字符串转换为日期,并使用您想要的格式转换回:

select to_char(to_date('2013-01-01', 'YYYY-MM-DD'), 'YYYYMMDD');
有关日期时间格式的详细信息:


要将日期字符串转换为数字:

Select TO_NUMBER(TO_CHAR(to_date('2013-01-01', 'YYYY-MM-DD'),'YYYYMMDD')) from dual
始终先将其转换为字符,然后再转换为数字:

Select TO_NUMBER(TO_CHAR(to_date('2013-01-01', 'YYYY-MM-DD'),'YYYYMMDD')) from dual
如果列数据类型为DATE,则在以下列表中使用列名代替sysdate:

Select TO_NUMBER(TO_CHAR(sysdate,'YYYYMMDD')) from dual

你是否有一个你认为无效的当前方法?TO_NUMBER(TO_CHAR(TO_DATE('2013-01-01','yyyyy-MM-DD'),'yyyyymmdd'),9999999999)没有错,我会接受这个答案。输入是字符串,而不是日期。