暂无图片
Oracle如何根据出生日期判断公民是否成年呢?
我来答
分享
吕泳峰
2022-10-10
Oracle如何根据出生日期判断公民是否成年呢?
暂无图片 5M

Oracle如何根据出生日期判断公民是否成年呢?
出生日期的数据类型是varchar2的,具体数据是这样的
20221010
20221011
20221012
20221013
年月日的格式
有个需要特别注意的地方,就是需求是统计一段时间内的,比如今年国庆期间未成年的

例子:小明是2004年10月02日出生,小明10月1日还没有成年,可是10月2日已经成年了,请问这种需求怎么实现呢?
有没有办法查出小明距离成年还有多少天呢?

我来答
添加附件
收藏
分享
问题补充
6条回答
默认
最新
哇哈哈

create table info (name varchar2(50) ,birth varchar2(8));
insert into info values('小赵','20000101');
insert into info values('小钱','20220101');
insert into info values('小孙','20041010');
insert into info values('小李','20041001');
select name,birth, ceil((to_date(birth,'yyyy-mm-dd') + interval '18' year)-sysdate) Days from info where (to_date(birth,'yyyy-mm-dd') + interval '18' year) > sysdate;--------未成年人员,生日,及天数

暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
哇哈哈
答主
2022-10-10
思路,出生日期加18年和sysdate比对
哇哈哈
答主
2022-10-10
统计特定时间未成年的话,就把sysdate换成to_date('19900101','yyyy-mm-dd')
吕泳峰
题主
2022-10-10
谢谢 这个好用 学习了
吕泳峰

求大神指点,如何通过出生日期计算出还有多少天成年呢

暂无图片 评论
暂无图片 有用 0
打赏 0
Thomas

SQL> select * from tb_zxp;

NAME BIRTHDATE
------------------------------ ------------------------
TOM 20040929
JACK 20041014
MIKE 20041010
STEVE 20070721


with t as (select name,months_between (trunc(sysdate),to_date(birthdate,'yyyymmdd')) as m_b,to_date(birthdate,'yyyymmdd') as birthdate,trunc(sysdate) from tb_zxp)
2 select name,birthdate,case when m_b>=216 then 1 else 0 end if_adult,case when m_b<216 then add_months(birthdate,216) -trunc(sysdate) end as need_days from t;

NAME BIRTHDATE              IF_ADULT    NEED_DAYS
------------------------------ ------------------- ---------- ----------
TOM 2004-09-29 00:00:00   1
JACK 2004-10-14 00:00:00   0               4
MIKE 2004-10-10 00:00:00   1
STEVE 2007-07-21 00:00:00 0             1015

暂无图片 评论
暂无图片 有用 0
打赏 0
Thomas

with t as (select name,months_between (trunc(sysdate),to_date(birthdate,'yyyymmdd')) as m_b,to_date(birthdate,'yyyymmdd') as birthdate,trunc(sysdate) from tb_zxp)
select name,birthdate,case when m_b>=216 then 1 else 0 end if_adult,case when m_b<216 then add_months(birthdate,216) -trunc(sysdate) end as need_days from t;

暂无图片 评论
暂无图片 有用 0
打赏 0
DarkAthena

add_months函数有个问题,在处理闰年的2月29日时,匹配的非闰年的2月份,日期是28号,这个时候应该不算成年

暂无图片 评论
暂无图片 有用 0
打赏 0
李宏达
2022-10-10
考虑的真全面。。
Thomas

我不这么认可,比如他出生日期是闰年,他生在2月29日,那么出生后第18年正好是平年,该年后的2月28日那天,他就算成年了。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏