全部产品

TRUNC (date)

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

注意

与函数 ROUND 的区别为,TRUNC 返回的值必须是在 date 之前的离 date 最近的日期,ROUND 可以是 date 之前也可以是 date 之后的离它最近的日期值。

语法

TRUNC (date,[fmt])

参数

参数

说明

date

DATE 数据类型。

fmt

指定了函数返回值与 date 的距离单位,以下表格列举了该参数的可取值,大小写不敏感。

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 |
+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+