根据年龄算出生日期

每天学一点2019 2018-06-13 02:02:09
patient表中有生日、登记日期(就是当前时间)字段

如:生日=4岁4月、 登记时间=2018-5-30 09:59:08
出生日期格式yyyy-mm-dd格式,我主要需要年和月准确,天数不重要保证出生日期格式就可以了。

生日格式有三种
几岁
几岁几月
几月几天

...全文
1191 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
6666这个可以用,用这个已经解决了
nayi_224 2018-06-20
  • 打赏
  • 举报
回复
失误失误.. with tab1 as ( select t1.sr, nvl(regexp_substr(regexp_substr(t1.sr, '[0-9]+岁'), '[0-9]+'), 0) y, nvl(regexp_substr(regexp_substr(t1.sr, '[0-9]+月'), '[0-9]+'), 0) m, nvl(regexp_substr(regexp_substr(t1.sr, '[0-9]+天'), '[0-9]+'), 0) d from test t1 ) select t1.*, add_months(sysdate - t1.d, (t1.y * 12 + t1.m) * -1) from tab1 t1 ;
nayi_224 2018-06-20
  • 打赏
  • 举报
回复
with tab1 as ( select t1.sr, nvl(regexp_substr(regexp_substr(t1.sr, '[0-9]+岁'), '[0-9]+'), 0) y, nvl(regexp_substr(regexp_substr(t1.sr, '[0-9]+月'), '[0-9]+'), 0) m, nvl(regexp_substr(regexp_substr(t1.sr, '[0-9]+天'), '[0-9]+'), 0) d from test t1 ) select t1.*, add_months(sysdate - t1.d, t1.y * 12 * t1.m * -1) from tab1 t1 ;
  • 打赏
  • 举报
回复
用截取字符串的方式,把月 岁 提出来,然后用登记日期匹配就可以了吧
  • 打赏
  • 举报
回复
字段里还有 2月12天 这种几月几天的数据。怎么判断了
  • 打赏
  • 举报
回复
上次问过了,生日格式时 几岁几月 和几岁 ,现在增加了几月几天格式 之前版主帮我解答了 SQL> SQL> create table test(sr varchar(10), rq date default sysdate); Table created SQL> begin 2 insert into test(sr) values('5岁3月'); 3 insert into test(sr) values('8岁8月'); 4 insert into test(sr) values('8岁10月'); 5 insert into test(sr) values('43岁'); 6 end; 7 / PL/SQL procedure successfully completed SQL> with m as ( 2 select 3 regexp_substr(replace(sr,'月',''),'[^岁]+', 1, 1) sr_y, 4 regexp_substr(replace(sr,'月',''),'[^岁]+', 1, 2) sr_m, 5 sr, 6 rq 7 from test 8 ) 9 select sr, rq, add_months(rq, -(sr_y * 12 + nvl(sr_m,0))) rq_new from m; SR RQ RQ_NEW ---------- ----------- ----------- 5岁3月 2018-05-30 2013-02-28 8岁8月 2018-05-30 2009-09-30 8岁10月 2018-05-30 2009-07-30 43岁 2018-05-30 1975-05-30 SQL> drop table test purge; Table dropped SQL>

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧