我刚刚开始学习SQL,并且对sysdate函数有疑问。 我们为您提供了一个表格,其中包含 emp_dob (员工的出生日期),我们需要找到他们的年龄。
解决方案将是
SELECT emp_fname "First Name"
, emp_lname "Last Name"
, round ((sysdate-emp_dob)/365,2) "Employee Age"
from emp
order
by "Employee Age" desc;
我的问题是,为什么必须将其除以365才能找到年龄。
为什么不能仅仅将其设为sysdate-出生日期。
谢谢
答案 0 :(得分:0)
日期在内部存储为浮点数,其中整数部分报告天数,小数部分报告一天中的时间。
从NOW()
或SYSDATE
中减去出生日期(取决于您使用的数据库),因此可以得出有关人员的生活天数。
除以365即可得出其年龄。
当然,使用函数DATEDIFF
会更好,因为在这种情况下,您不必依赖内部实现。
答案 1 :(得分:0)
我有另一种方法,但是不确定是否很好。
仅提取年份,然后减去:
SELECT (YEAR(SYSDATE) - YEAR(emp_dob)) AS "Employee Age" FROM table_name
答案 2 :(得分:0)
您可以将timestampdiff
函数与year
参数一起使用,并将truncate
函数用作:
select truncate(timestampdiff(year,emp_dob,current_date),2) as age
from tab;