日期:2014-05-17  浏览次数:20556 次

求一个sql 语句 + 高分,高分

//获取相差的年份即年龄
1,select EXTRACT(year FROM to_date('2015-03-30','yyyy-mm-dd')) - EXTRACT(year FROM to_date('1990-03-30','yyyy-mm-dd')) years from dual; 


//获取当前时间
2,select to_char(sysdate,'yyyy-MM-dd') from dual


//获取员工档案中用户生日,
3,select HR_NAME_BIRTHDAY from hr_filemanager

??求如何将这3个sql 拼成一个计算年龄差的sql

结果应该是2-1 = 年龄 ,但是不知道这个sql 要怎么写。1为2个年龄相减的sql 语句。


------解决方案--------------------
你这个Oracle的吧?不应该发到SQLServer专区,不过貌似也没关系,你如果仅仅要相减,那就试试:


SELECT  HR_NAME_BIRTHDAY,b.nowdate
FROM    hr_filemanager CROSS JOIN (select to_char(sysdate,'yyyy-MM-dd') as nowdate from dual) AS B

上面语句就出来两列,然后用你第一个语句计算就可以了,因为不懂Oracle语法,所以就不写那么多,等下报错更麻烦,这个语句虽然是T-SQL写法,不过应该Oracle也支持的。
------解决方案--------------------
思路就是用笛卡儿积,你用Oracle的方法算一下吧。
------解决方案--------------------
select extract(year from to_date(HR_NAME_BIRTHDAY,'yyyymm'))-extract(year from sysdate) from hr_filemanager

------解决方案--------------------
select extract(year from to_date(HR_NAME_BIRTHDAY,'yyyymmdd'))-extract(year from sysdate) from hr_filemanager

少了个dd.
------解决方案--------------------
帮顶
------解决方案--------------------
to_char???oracle?????
------解决方案--------------------
都说叫你去Oracle问咯,思路就是用笛卡儿积....