You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 08:11:40