如何将非标准字符串格式化为日期格式

时间:2019-10-01 16:16:46

标签: sql oracle

是否可以选择字符串'03 / 01/2018'和'09 -NOV-17',以便结果均采用'MM / DD / YYYY'格式?

结果也可以是字符串。

2 个答案:

答案 0 :(得分:1)

无需使用正则表达式-简单的LIKE可以选择DATE格式。

示例

with my_data as (
select '03/01/2018' dt from dual union all
select '09-NOV-17' from dual)
select 
dt,
case when dt like '__/__/____' then to_date(dt,'dd/mm/yyyy')
when dt like '__-___-__' then  to_date(dt,'dd-mon-rr') 
end as dt_date
from my_data;

DT         DT_DATE            
---------- -------------------
03/01/2018 03.01.2018 00:00:00
09-NOV-17  09.11.2017 00:00:00

答案 1 :(得分:0)

您可以使用case表达式。假设所有值都是两种格式之一,则可以执行以下操作将日期转换为日期:

select (case when col like '%-%-%' then to_date(col, 'MM/DD/YYYY')
             else to_date(col, 'DD-MON-YY')
        end)

我更喜欢日期格式的值。您可以使用to_char()转换为您选择的字符串格式。