暂无图片
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


请输入正文
提交
相关推荐
请教各位,oracle的表我有个字段已经删除了,但是数据字典里出来一个这字段,该如何去掉?
回答 3
应该是一个varchar列被设置了unused
装oracle集群件,都通过了,为什么图形界面调不出来,有会的吗?
回答 1
已采纳
你这是报错了。别人的图形化出不来是display有问题。你这个是组件都缺失。这个说你的kubawt.so文件不存在。
oracle 多表left join之后,后面的left join不再关联主表,而是关联第一个left join的表,执行计划中全部都不走索引,都是全表扫描。这个有优化的好办法吗?
回答 2
说一下。假如是mysql我的优化思路。我会看执行计划,确定驱动表。然后依次看。join关联字段是否有索引。如果驱动表选错,那么可以强制使用索引或用延迟关联的方法。
请教下各位:从mysql到oracle之间的ogg同步配置,是否支持DDL?
回答 1
已采纳
下面摘自OGG18.1官方文档,MySQL支持的对象以及操作,可以看到支持DDL,并不是所有DDL都支持,具体版本的同样可以参考相应版本官方文档。https://docs.oracle.com/en/
oracle 生产库的内存管理是自动还是手动管理?
回答 1
已采纳
可以设置成自动管理。不过个别场景下会出现一些波动。资深的一些专家不建议,他们说Oracle的自动在OLAP上厉害,OLTP上还要提升。不过一般的场景问题不大。你要是不放心SGA和PGA还是自己设定也行
请问 设置commit_logging为batch后,有啥影响呢?
回答 4
已采纳
暂无文字回复
用Redhat6跑Oracle10g 稳定吗?
回答 3
更新换代了,使用主流版本或者国产数据库
Oracle expdp 命令导出数据, 如何知道里面的数据什么时候截止?
回答 5
已采纳
什么时候结束只能根据自己的表的情况,分析一下了,但如果你觉得时间长,可以用下面的语句,观察一下是不是hang住了,还是在正常跑。希望对你有所帮助SQL&gt;colOWNERNAMEfora10SQL
Oracle中怎么写一个正则表达查出某个字段包含中文的值?
回答 1
已采纳
字符集字数Unicode编码基本汉字20902字4E009FA5基本汉字补充90字9FA69FFF扩展A6592字34004DBF扩展B42720字200002A6DF扩展C4153字2A7002B7
Oracle两个节点的asm日志一直出现NOTE:voting file relocation is required in diskgroup OCR 大佬们 这个算是报错嘛 两个节点的asm日志都一直出现这个信息
回答 3
已采纳
要么打补丁,要么进行磁盘组重建