首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle TRUNC 函數完整用法指南(日期與數值)

     編輯:Oracle 資料庫相關知識

Oracle TRUNC 函數可用於「日期截斷」與「數值截斷」兩大場景,語法雖簡單但極實用。本文系統整理兩類用法、格式模型與常見範例,供開發與 DBA 快速查閱。

一、TRUNC(Date) — 日期截斷

TRUNC(date [, fmt])
  • date:日期值(含時間元件)。
  • fmt:格式模型,指定截斷到哪個單位;省略則截斷到「日」(時分秒歸零)。

常用格式模型與範例

fmt截斷單位範例結果
YYYY / YEAR年TRUNC(SYSDATE, 'YYYY')當年 1 月 1 日 00:00:00
MM / MONTH月TRUNC(SYSDATE, 'MM')當月 1 日 00:00:00
DD / DAY日TRUNC(SYSDATE, 'DD')當日 00:00:00(預設)
D / DY週TRUNC(SYSDATE, 'D')本週第一天(通常為週日)
HH / HH24時TRUNC(TO_DATE('24-Nov-1999 08:37 PM'), 'HH')1999-11-24 08:00:00
MI分TRUNC(SYSDATE, 'MI')當前分鐘 0 秒

實用範例

TRUNC(TO_DATE('24-Nov-1999 08:00 PM'), 'DD-MON-YYYY HH:MI AM')
-- 1999-11-24 00:00:00

TRUNC(TO_DATE('24-Nov-1999 08:37 PM'), 'HH')
-- 1999-11-24 08:00:00

二、TRUNC(Number) — 數值截斷

TRUNC(number [, decimals])
  • number:待處理數值。
  • decimals:保留小數位數;省略則截去所有小數(等同取整數部);可為負數,表示小數點左側截斷。

範例對照

運算式結果說明
TRUNC(89.985, 2)89.98保留 2 位小數,直接截斷不四捨五入
TRUNC(89.985)89省略 decimals,截去所有小數
TRUNC(89.985, -1)80負數:十位數歸零(截斷到十位)
TRUNC(1234.56, -2)1200截斷到百位

三、TRUNC vs ROUND vs FLOOR/CEIL

  • ROUND:四捨五入。
  • TRUNC:直接截斷,不進位。
  • FLOOR:向下取整(負數會變更小,如 FLOOR(-1.2) = -2)。
  • CEIL:向上取整(負數會變更大,如 CEIL(-1.2) = -1)。

四、常見應用場景

  • 報表統計:TRUNC(sale_date, 'MM') 按月分組。
  • ETL 清洗:統一時間精度、金額精度。
  • 分區表維護:TRUNC(SYSDATE, 'YYYY') 計算分區邊界。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved