你可以使用列作为months_between函数中的一个数据吗?

时间:2013-10-06 09:43:14

标签: sql oracle

是否可以在months_between(data1,data2)函数中使用一整列数据?

例如,我可以创建一个包含一组员工姓名和年龄的视图,其中年龄是从他们的“出生”列计算的吗?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

是的,通常你可以在任何功能中使用一个列,它是一个数据库!例如:

select a.*, months_between(sysdate, dob)
  from users a

正如A.B.Cade在评论中建议使用virtual column。这具有将数据存储在表格中的好处,即,可以将其编入索引并且可以收集统计数据,同时给予"始终最新的"在视图中即时计算的东西的好处。不幸的是,年龄不是确定性的,它会根据当前的sysdate定期更改,因此虚拟列无法工作。

创建视图应该没问题:

create or replace view users_age as
 select u.*, floor(months_between(sysdate, dob)/12) as age
  from users u;

SQL Fiddle