Oracle数据库筛选工龄≥15年员工并新增工龄列问题求助
解决Oracle数据库工龄查询的问题
错误原因
你使用的DATE_FORMAT是MySQL专属函数,Oracle数据库不支持该函数,因此会抛出ORA-00904: "DATE_FORMAT": invalid identifier错误。
正确的SQL语句
要筛选工龄≥15年的员工并在结果中展示工龄,使用Oracle的MONTHS_BETWEEN函数计算工龄更准确,完整语句如下:
SELECT FIRST_NAME || ' ' || LAST_NAME AS "Fn and Ln", TRUNC(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)/12) AS 工龄 FROM HR.EMPLOYEES WHERE TRUNC(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)/12) >= 15;
语句说明
FIRST_NAME || ' ' || LAST_NAME:Oracle中用||拼接字符串,比嵌套CONCAT更简洁,最终得到员工全名。TRUNC(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)/12):MONTHS_BETWEEN(SYSDATE, HIRE_DATE)计算当前日期与入职日期的月份差值;- 除以12将月份差转换为年数,
TRUNC函数去除小数部分,得到整数形式的工龄(以年为单位)。
- WHERE子句通过相同的工龄计算逻辑,筛选出工龄≥15年的员工。
内容的提问来源于stack exchange,提问作者Octopus
相关产品推荐
相关产品推荐

