我有一个表,其日期为varchar类型,结果输出的日期(Begin_date)为'20130630'格式。 我需要将开始日期输出转换为日期。只要是日期,什么日期格式都没有关系。
我尝试了这些,但似乎都没有用。我收到ORA-01843无效的月份错误。
to_date(aa.Begin_date, 'yyyymmdd')
to_char(to_date(aa.Begin_date, 'yyyymmdd'), 'dd-mm-yy')
to_char(to_date(aa.Begin_date, 'yyyymmdd'), 'dd-MON-yy')
2)另外,某些开始日期的格式为20030000。从本质上讲,我们仅知道年份。我需要有一个输入1月1日和年份(无关紧要的格式)的输出。
Case when aa.begin_date between '1900' and '2030'
then to_date('0101'+aa.begin_date,'YYYYMMDD')
我尝试了一个类似的声明
case when aa.begin_date like '%0000'
then to_date('0101'+aa.begin_date,'YYYYMMDD')
end as tes
答案 0 :(得分:4)
您可以尝试以下操作:
with test_data as
( select '20130630' begin_date from dual
union
select '20030000' begin_date from dual
)
select
case when test_data.begin_date like '%0000' then
to_date(substr(begin_date,1,4)||'0101','YYYYMMDD')
else to_date(begin_date,'YYYYMMDD') end my_date
from test_data
但是最好的办法是将数据模型更正为使用实际的DATE类型。将日期存储为字符串是错误的设计。
答案 1 :(得分:0)
这将起作用:
SELECT to_date('20130630','YYYYMMDD') FROM dual