依指定格式截斷日期值,保留較大單位,較小單位歸零。
語法: 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') -- 當天零點 (年月日,時分秒歸零)
直接捨去指定位數後的數字,不進行四捨五入。
語法: 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。