Oracle-计算岁数
CREATE TABLE t_user3(
id NUMBER PRIMARY KEY,
user_name VARCHAR2(20),
birt_date date -->>java.util.Date(包含日期+時間)
)
INSERT INTO t_user3 VALUES (1,'小明',to_date('1995-10-15','yyyy-MM-dd'));
INSERT INTO t_user3 VALUES (2,'小黃',to_date('1985-09-05','yyyy-MM-dd'));
INSERT INTO t_user3 VALUES (3,'小軍',to_date('1987-07-05','yyyy-MM-dd'));
INSERT INTO t_user3 VALUES (4,'大林',to_date('1967-09-15','yyyy-MM-dd'));
INSERT INTO t_user3 VALUES (5,'彤彤',to_date('2003-09-15','yyyy-MM-dd'));
commit
select * from t_user3
action
service -->>遍歷 userList (age)
--java的日歷類有強大的時間求算能力
dao -->>不對age
entity
User
int id;
String userName;
java.util.Date birtDate;
int age;
-->>對于不在java中的程序,如果要算日期
--->>只能在sql運算
-- 1.算年齡,增加多1個字段
select
id,
user_name,
-- birt_date,
trunc(months_between(sysdate,birt_date)/12) age
from
t_user3
-- 1.看單一值 (可以使用decode去取代)
-- 2.看范圍
case when
-- 2.再增加一個年齡分層
select
id,
user_name,
age,
case
when age<19 then '未成年人'
when age<25 then '年青人'
when age<40 then '中青'
when age<50 then '中年人'
when age<60 then '中老年人'
else '老人'
end ageLevel
from (
select
id,
user_name,
-- birt_date,
trunc(months_between(sysdate,birt_date)/12) age
from
t_user3
) t_user3_age
--3.對年齡分層進行統計
select agelevel,count(1) kk from (
select
id,
user_name,
age,
case
when age<19 then '未成年人'
when age<25 then '年青人'
when age<40 then '中青'
when age<50 then '中年人'
when age<60 then '中老年人'
else '老人'
end ageLevel
from (
select
id,
user_name,
-- birt_date,
trunc(months_between(sysdate,birt_date)/12) age
from
t_user3
) t_user3_age
) t_user3_age_level
group by agelevel
order by kk desc
select * from t_user3
轉載于:https://www.cnblogs.com/sheying/p/8578548.html
總結
以上是生活随笔為你收集整理的Oracle-计算岁数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 塔防游戏 Day2
- 下一篇: 改进 网站资源探测工具(添加代理)