我有一个看起来像这样的字符串:
1890602170089
虽然这个数字(实际类型是VARCHAR2)没有任何意义,但这里有一个简短的解释:
1
,第一位:1代表男性,2代表女性89 06 02
:1989年6月2日170089
:随机生成的我不需要的东西我需要从此字符串中提取生日并将其转换为DATE类型。是否有任何内置可以做到这一点或我需要自己做?如果是这样,怎么办呢?
答案 0 :(得分:1)
这似乎有效:
select (case when eid like '1%' then to_date('19'||substr(eid, 2, 6), 'YYYYMMDD')
when eid like '3%' then to_date('20'||substr(eid, 2, 6), 'YYYYMMDD')
end)
from (select '1890602170089' as eid
from dual
) t;
答案 1 :(得分:1)
这似乎可以通过小提琴测试来实现。
--your original test data 06/02/1989
select date(substring(1890602170089, 2, 6))
-- 06/02/2013
select date(substring(1130602170089, 2, 6))