oracle 如何分岁/月为单位计算年龄?

有oracle一张表表中有一出生日期字段为date类型是,现要建立一个如下视图oracle表如下id---(varchar2(10))date_of_birth---(d... 有oracle一张表表中有一出生日期字段为date 类型是,现要建立一个如下视图
oracle 表如下
id---(varchar2(10)) date_of_birth---(date)
05576767 1957-3-28
05563743 2013-3-27
05563744 2013-7-15
05563745 2013-6-7
05563741 2010-11-21
要用这个表生成一个这样的视图
id age unit
05576767 56.3 岁
05563743 3.6 月
05563744 1 天
05563745 1.3 月
05563741 2.8 岁
就是大于一岁的以岁为单位,小于1月的以天为单位,不满一岁的且大等于1月以月为单位
展开
 我来答
匿名用户
推荐于2016-05-25
展开全部
CREATE  TABLE  test (
  id  varchar2(10),
  date_of_birth  date
);

INSERT INTO test VALUES('05576767',  TO_DATE('1957-3-28',  'YYYY-MM-DD'));
INSERT INTO test VALUES('05563743',  TO_DATE('2013-3-27',  'YYYY-MM-DD'));
INSERT INTO test VALUES('05563744',  TO_DATE('2013-7-15',  'YYYY-MM-DD'));
INSERT INTO test VALUES('05563745',  TO_DATE('2013-6-7',   'YYYY-MM-DD'));
INSERT INTO test VALUES('05563741',  TO_DATE('2010-11-21', 'YYYY-MM-DD'));


SELECT
  id,
  CASE WHEN  MONTHS_BETWEEN(TRUNC(SYSDATE), date_of_birth) * 1.0 / 12 > 1 THEN  ROUND(MONTHS_BETWEEN(TRUNC(SYSDATE), date_of_birth) * 1.0 / 12, 1)
       WHEN  MONTHS_BETWEEN(TRUNC(SYSDATE), date_of_birth) > 1 THEN  ROUND(MONTHS_BETWEEN(TRUNC(SYSDATE), date_of_birth), 1)
   ELSE  TRUNC(sysdate) - date_of_birth 
END  AS  age,
  CASE WHEN  MONTHS_BETWEEN(TRUNC(SYSDATE), date_of_birth) * 1.0 / 12 > 1 THEN  '岁'
       WHEN  MONTHS_BETWEEN(TRUNC(SYSDATE), date_of_birth) > 1 THEN   '月'
   ELSE  '天'
END  AS  Unit
FROM
  test;
  

ID                          AGE UNIT
-------------------- ---------- ------
05576767                   56.3 岁
05563743                    3.6 月
05563744                      1 天
05563745                    1.3 月
05563741                    2.7 岁
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式