如何在Oracle中比较日期和格式? 像这样:如果MyDate的格式为DD MONTH YYYY THEN /....
elsif MyDate的格式为YYYY-MONTH-DD然后...
编辑:我的日期在varchar2中,我想保持这种状态。我只想知道如何编写一个正则表达式,例如2010年10月10日。
有可能吗?如果是正则表达式,其格式应为
答案 0 :(得分:0)
与问题的注释中提到的内容一样,最佳做法是拥有一个实际的DATE
类型字段而不是VARCHAR2
,如果您需要特定的显示格式,请将其存储在另一个字段中作为格式模式。也就是说,您可以使用REGEXP_LIKE
通过以下示例中的模式检查格式。
with dateinfo as (
select 1 as id, '2018-MARCH-10' as dtString from dual
union all
select 2 as id, '10 MARCH 2018' as dtString from dual )
select id, dtString,
case
when regexp_like(dtString, '^[0-9]{4}-.[a-zA-Z]{3,}-.[0-9]{1,2}$') then 'format1'
when regexp_like(dtString, '^[0-9]{1,2} [a-zA-Z]{3,} [0-9]{4}$') then 'format2'
else 'no format'
end as dtFormat
from dateinfo;