Sql 将不同长度的数字转换为日期

Sql 将不同长度的数字转换为日期,sql,oracle,date,Sql,Oracle,Date,我试图将(9012012020)等数字转换为日期(2020120120200901) 我有不同长度的数值,就像上面我试过的一样 select TO_DATE(TO_CHAR(col_name), 'YYYYMMDD') from table_name 我需要您的帮助,如果这些值是有效的,请感谢,也就是说,没有类似的值 ab232020 38269283 所有值都采用相同的格式,然后可以执行以下操作: (更改会话只是为了让您知道什么代表什么;您不必这样做) 查询本身: SQL> wi

我试图将(9012012020)等数字转换为日期(2020120120200901)

我有不同长度的数值,就像上面我试过的一样

select TO_DATE(TO_CHAR(col_name), 'YYYYMMDD')
from table_name 

我需要您的帮助,如果这些值是有效的,请感谢

,也就是说,没有类似的值

  • ab232020
  • 38269283
所有值都采用相同的格式,然后可以执行以下操作:

(更改会话只是为了让您知道什么代表什么;您不必这样做)

查询本身:

SQL> with test (col) as
  2    (select  9012020 from dual union all
  3     select 12012020 from dual
  4    )
  5  select col,
  6         to_date(lpad(col, 8, '0'), 'mmddyyyy') result
  7  from test;

       COL RESULT
---------- ----------
   9012020 01.09.2020
  12012020 01.12.2020

SQL>

在TO_CHAR中应用格式,添加前导零(或LPAD),并在TO_date中使用匹配的格式“MMDDYYYY”我可以将日期翻转为类似于yyyyymmdd吗?日期不能翻转,它以内部格式存储。TO_DATE仅用于将表示日期的字符串转换为使用给定格式的日期,反之亦然。
SQL> with test (col) as
  2    (select  9012020 from dual union all
  3     select 12012020 from dual
  4    )
  5  select col,
  6         to_date(lpad(col, 8, '0'), 'mmddyyyy') result
  7  from test;

       COL RESULT
---------- ----------
   9012020 01.09.2020
  12012020 01.12.2020

SQL>