TRUNC 函数返回以参数 fmt 为单位距离的离指定日期 date 最近的日期时间值,并且返回的日期值在 date 之前。

注意
与函数
ROUND的区别为,
TRUNC返回的值必须是在
date之前的离
date最近的日期,
ROUND可以是
date之前也可以是
date之后的离它最近的日期值。
TRUNC (date,[fmt])
|
参数 |
说明 |
|---|---|
date |
|
fmt | 指定了函数返回值与 |
|
fmt参数表 |
说明 |
|---|---|
j | 默认值,最近 0 点日期。 |
day、dy、d | 返回离指定日期最近的星期日。 |
month、mon、mm、rm | 返回离指定日期最近的月的第一天日期。 |
q | 返回离指定日期最近的季的日期。 |
yyyy、yyy、yy、y | 多个 y 表示不同的精度,返回离指定日期最近的年的第一个日期。 |
cc、scc | 返回离指定日期最近的世纪的初日期。 |
DATE 数据类型。
以下示例展示了用 TRUNC 计算距离 SYSDATE 最近的符合要求的日期值:
SELECT SYSDATE 当时日期,
TRUNC(SYSDATE) 今天日期,
TRUNC(SYSDATE,'DAY') 本周星期日,
TRUNC(SYSDATE,'MONTH') 本月初,
TRUNC(SYSDATE,'Q') 本季初日期,
TRUNC(SYSDATE,'YEAR') 本年初日期 FROM DUAL;查询结果如下:
+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+
| 当时日期 | 今天日期 | 本周星期日 | 本月初 | 本季初日期 | 本年初日期 |
+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+
| 2020-03-08 22:41:46 | 2020-03-08 00:00:00 | 2020-03-08 00:00:00 | 2020-03-01 00:00:00 | 2020-01-01 00:00:00 | 2020-01-01 00:00:00 |
+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+以下示例展示了在相同日期下用 ROUND 计算符合要求的最近日期的结果:
SELECT SYSDATE 当时日期,
ROUND(SYSDATE) 最近0点日期,
ROUND(SYSDATE,'DAY') 最近星期日,
ROUND(SYSDATE,'MONTH') 最近月初,
ROUND(SYSDATE,'Q') 最近季初日期,
ROUND(SYSDATE,'YEAR') 最近年初日期 FROM DUAL;查询结果如下:
+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+
| 当时日期 | 最近0点日期 | 最近星期日 | 最近月初 | 最近季初日期 | 最近年初日期 |
+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+
| 2020-03-08 22:41:02 | 2020-03-09 00:00:00 | 2020-03-08 00:00:00 | 2020-03-01 00:00:00 | 2020-04-01 00:00:00 | 2020-01-01 00:00:00 |
+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+