方法一:
SELECT TRUNC(months_between(sysdate, birth)/12) AS age
from mytable
方法二:
select TRUNC((to_char(sysdate, 'yyyyMMdd') - to_char(birth, 'yyyyMMdd')) /
10000) as age
from mytable
注:sysdate 为系统日期时间,birth 为表中出生日期字段
PS:
需要使用check自定义约束,例如设置入职员工年龄必须大于18周岁,由于在约束中不可以加入系统变量,则在创建表时 ,加入一个字段代替系统时间变量。
create table emps (
emp_id number(11) not null,
emp_name nvarchar2(50),
emp_birthday date,
manager_id number(11),
dept_id number(11),
--定义一个字段 去指代系统时间变量
emp_createdate date default sysdate,
--- 表级约束
constraint emps_empId_pk primary key(emp_id),
constraint emps_deptId_fk foreign key(dept_id) references dept(dept_id),
--入职员工年龄必须大于18周岁
constraint emps_empbirthday_check
check(MONTHS_BETWEEN(emp_createdate,emp_birthday)/12 > 18)
)