MySQL查询员工累计工作天数经验的其他实现方式咨询
你的SQL思路完全正确
你的SQL语句逻辑完全符合需求:通过计算入职日到今日的天数得到新公司工作经验,再加上入职前的旧经验exp,最终得出累计总经验,这个思路没问题。
其他实现方式
1. 使用DATEDIFF函数(MySQL兼容)
DATEDIFF在MySQL中直接返回两个日期的天数差(结束日期 - 开始日期),写法更简洁:
SELECT emp_no, join_date, DATEDIFF(CURDATE(), join_date) + exp AS total_exp, DATEDIFF(CURDATE(), join_date) AS new_org_exp FROM emp_detail
2. 直接日期运算(PostgreSQL支持)
PostgreSQL中可直接通过日期相减得到天数:
SELECT emp_no, join_date, (CURRENT_DATE - join_date) + exp AS total_exp, (CURRENT_DATE - join_date) AS new_org_exp FROM emp_detail
3. 使用AGE函数提取天数(PostgreSQL)
通过AGE函数生成时间间隔,再提取天数部分:
SELECT emp_no, join_date, EXTRACT(DAY FROM AGE(CURRENT_DATE, join_date)) + exp AS total_exp, EXTRACT(DAY FROM AGE(CURRENT_DATE, join_date)) AS new_org_exp FROM emp_detail
4. SQL Server 适配写法
SQL Server使用GETDATE()获取当前日期,DATEDIFF参数顺序为(单位,开始日期,结束日期):
SELECT emp_no, join_date, DATEDIFF(DAY, join_date, GETDATE()) + exp AS total_exp, DATEDIFF(DAY, join_date, GETDATE()) AS new_org_exp FROM emp_detail
内容的提问来源于stack exchange,提问作者Emma
相关产品推荐
相关产品推荐

