在SQL中使用Sysdate查找员工年龄

时间:2018-10-10 07:38:57

标签: sql

我刚刚开始学习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-出生日期。

谢谢

3 个答案:

答案 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;

Rextester Demo