首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle TRUNC 函數完整指南:日期與數值截斷用法詳解

     編輯:Oracle 教學

Oracle TRUNC 函數完整指南:日期與數值截斷用法詳解

1. TRUNC (日期型別)

依指定格式截斷日期值,保留較大單位,較小單位歸零。

語法: TRUNC(date [, fmt])

  • date:日期值
  • fmt:格式模型(可選),若省略則截至「日」(時分秒歸零)

常用範例

TRUNC(TO_DATE('24-Nov-1999 08:00 pm'), 'dd-mon-yyyy hh:mi am')
-- 結果: '24-Nov-1999 12:00:00 am' (截至日)

TRUNC(TO_DATE('24-Nov-1999 08:37 pm','dd-mon-yyyy hh:mi am'), 'hh')
-- 結果: '24-Nov-1999 08:00:00 am' (截至時)

TRUNC(sysdate, 'yyyy')  -- 當年第一天 (1月1日 00:00:00)
TRUNC(sysdate, 'mm')    -- 當月第一天 (1日 00:00:00)
TRUNC(sysdate, 'd')     -- 本週第一天 (星期日 00:00:00)
TRUNC(sysdate, 'dd')    -- 當天零點 (年月日,時分秒歸零)

2. TRUNC (數值型別)

直接捨去指定位數後的數字,不進行四捨五入。

語法: TRUNC(number [, decimals])

  • number:待處理數值
  • decimals:保留小數位數(可選,預設 0 即截去所有小數);可為負數,表示從小數點左側開始截斷(十位、百位...)。

常用範例

TRUNC(89.985, 2)   = 89.98   -- 保留 2 位小數
TRUNC(89.985)      = 89      -- 截去所有小數
TRUNC(89.985, -1)  = 80      -- 截至十位 (個位歸零)
TRUNC(89.985, -2)  = 0       -- 截至百位

負數參數口訣

  • decimals = 1 → 保留至十分位 (小數點後 1 位)
  • decimals = -1 → 截至十位 (個位歸零)
  • decimals = -2 → 截至百位 (十位、個位歸零)

快速對照表

呼叫方式結果說明
TRUNC(SYSDATE)當天 00:00:00預設 fmt 為 'DD'
TRUNC(SYSDATE,'MM')本月 1 號 00:00:00月首
TRUNC(123.456, 1)123.4保留 1 位小數
TRUNC(123.456, -1)120十位以下歸零

核心差異提醒

  • ROUND:四捨五入
  • TRUNC:直接截斷 (向零取整)
  • 日期 TRUNC 回傳 DATE;數值 TRUNC 回傳 NUMBER。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved