[Oracle] TRUNC()函数
TRUNC() 是 Oracle 中一个多功能函数,主要用于对数值、日期进行截断操作
1.TRUNC()函数用于数值处理
语法格式
TRUNC(number, decimal_places)
参数说明
number:要截断的数值
decimal_places:保留的小数位数(可选),默认为0(截断所有小数部分)
正数:指定小数位数
负数:截断整数部分(将指定数字位左侧的数字变为0)
示例
-- 截断所有小数
SELECT TRUNC(123.4567) FROM dual; -- 123-- 保留2位小数
SELECT TRUNC(123.4567, 2) FROM dual; -- 123.45-- 截断整数部分(十位)
SELECT TRUNC(123.4567, -1) FROM dual; -- 120-- 截断整数部分(百位)
SELECT TRUNC(123.4567, -2) FROM dual; -- 100
2.TRUNC()函数用于日期处理
语法格式
TRUNC(date, format)
参数说明
date:要截断的日期值
format:截断的精度单位(可选),常用值包括:
'YEAR' 或 'YYYY' 或 'YY': 截断到当年第一天
'MONTH' 或 'MM' 或 'MON': 截断到当月第一天
'DD' 或 'DAY' 或 'D': 截断到当天(去掉时分秒)
'HH' 或 'HH12' 或 'HH24': 截断到当前小时
'MI': 截断到当前分钟
默认为'DD'(截断到当天)
示例
-- 当前日期:2025/8/9 下午 02:49:30
SELECT SYSDATE FROM dual;-- 截断到当天(去掉时分秒)
SELECT TRUNC(SYSDATE) FROM dual; -- 2025/8/9-- 截断到当年第一天
SELECT TRUNC(SYSDATE, 'YEAR') FROM dual; -- 2025/1/1-- 截断到当月第一天
SELECT TRUNC(SYSDATE, 'MM') FROM dual; -- 2025/8/1-- 截取到当天
SELECT TRUNC(SYSDATE, 'DD') FROM dual; -- 2025/8/9-- 截断到当前小时
SELECT TRUNC(SYSDATE, 'HH24') FROM dual; -- 2025/8/9 下午 02:00:00
提示Tips
① 与ROUND()函数不同,TRUNC()只是简单截断,不进行四舍五入
② TRUNC()函数不会改变原始数据类型,数值处理后仍是数值,日期处理后仍是日期