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

Oracle TRUNC(date) 日期截取完全手冊:從世紀到分鐘的 13 種常用格式

     編輯:Oracle 教學

核心語法

TRUNC(date_expr [, fmt])
-- fmt 省略默認 'DD' (截取到當天 00:00:00)

13 種實戰格式模板速查表

格式模型含義示例結果 (假設 2024-03-25 14:30:45)
CC / SCC世紀首日2001-01-01 00:00:00
YYYY / YEAR年首日2024-01-01 00:00:00
Q季度首日2024-01-01 00:00:00
MM / MONTH / RM月首日2024-03-01 00:00:00
WW年初第 1 天同週首日2024-03-18 00:00:00
IWISO 週首日 (週一)2024-03-25 00:00:00
W當月 1 號同週首日2024-03-25 00:00:00
DD / DDD / J當天 0 時 (默認)2024-03-25 00:00:00
DAY / DY / D本週首日 (週日)2024-03-24 00:00:00
HH24 / HH12整點2024-03-25 14:00:00
MI整分2024-03-25 14:30:00

常用組合技

-- 本月最後一天
TRUNC(LAST_DAY(SYSDATE), 'DD')

-- 下月第一天
TRUNC(ADD_MONTHS(SYSDATE, 1), 'MM')

-- 本季剩餘天數
TRUNC(ADD_MONTHS(SYSDATE, 3), 'Q') - TRUNC(SYSDATE, 'Q')

-- 判斷是否月初
CASE WHEN TRUNC(SYSDATE, 'MM') = TRUNC(SYSDATE) THEN 1 ELSE 0 END

TRUNC vs ROUND

  • TRUNC:向下截取 (Floor)。
  • ROUND:四捨五入 (最近)。
    例:ROUND(SYSDATE, 'MM') 若日期 ≥ 16 號則返回下月 1 號。

注意事項

  • 無秒精度:TRUNC 不支援 SS,需用 TO_CHAR/TO_DATE 組合。
  • 時區敏感:SYSDATE 取服務器時間,SYSTIMESTAMP 含時區。
  • 索引失效風險:WHERE TRUNC(col) = ... 會導致普通索引失效,建議改用 col >= TRUNC(SYSDATE) AND col < TRUNC(SYSDATE)+1 或建立函數索引。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved