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()函數不會改變原始數據類型,數值處理后仍是數值,日期處理后仍是日期