Oracle 中的 EXTRACT 函数详解
Oracle 中的 EXTRACT 函数详解
在 Oracle 数据库中,EXTRACT
函数是一种用于从日期或时间间隔中提取特定部分(如年、月、日等)的工具。它广泛应用于时间数据的分析与拆分,如按年份汇总、筛选某月数据等,是时间维度处理不可或缺的一部分。
一、函数语法
EXTRACT(field FROM {date_value | interval_value})
参数说明:
二、功能说明
EXTRACT
可用于提取时间字段中的年、月、日、小时、分钟、秒等信息。对于
INTERVAL
类型,可提取其内部的具体时间段(如年数或月数)。与
TO_CHAR(date, 'YYYY')
相比,EXTRACT
返回的是NUMBER
类型,便于数值运算与比较。该函数也适用于
TIMESTAMP WITH TIME ZONE
类型,可提取时区小时与分钟。
三、实用示例
示例 1:提取当前年份
SELECT EXTRACT(YEAR FROM SYSDATE) AS 当前年份 FROM dual;
输出结果:
当前年份
----------
2025
示例 2:提取指定日期的月份
SELECT EXTRACT(MONTH FROM DATE '2025-06-16') AS 月份 FROM dual;
结果说明:
提取的是
06
(6 月)
示例 3:提取时间戳中的秒数
SELECT EXTRACT(SECOND FROM SYSTIMESTAMP) AS 当前秒 FROM dual;
返回结果: 秒数可以带小数点,例如 42.123456
示例 4:从 INTERVAL 中提取年与月
SELECT
EXTRACT(YEAR FROM INTERVAL '3-7' YEAR TO MONTH) AS 年份,
EXTRACT(MONTH FROM INTERVAL '3-7' YEAR TO MONTH) AS 月份
FROM dual;
返回结果:
年份 月份
---- ---
3 7
示例 5:配合分组统计使用
SELECT
EXTRACT(YEAR FROM hire_date) AS 入职年份,
COUNT(*) AS 员工人数
FROM employees
GROUP BY EXTRACT(YEAR FROM hire_date);
该写法用于按入职年份统计员工数量,常用于人事分析报表。
四、常见字段值列表
五、注意事项
EXTRACT
返回的是NUMBER
类型,适合做数值运算、排序、分组等操作。不支持直接提取星期几,如需提取可使用
TO_CHAR(date, 'D')
。如果对 NULL 日期调用
EXTRACT
,返回值也为 NULL。提取无效字段(如对
DATE
使用TIMEZONE_HOUR
)会导致错误。
六、结语
EXTRACT
是 Oracle 中处理时间字段的重要函数,它结构清晰、语义明确,特别适合在时间维度分析、报表开发中使用。相比于 TO_CHAR
函数的字符处理方式,EXTRACT
更适合做数值运算与逻辑判断,是编写高质量 SQL 的常用利器之一。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Noah
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果