Oracle TRUNC(date) 函数使用指南
Oracle TRUNC(date) 是一个内置函数,它将给定的日期截断到指定的单位。
Oracle TRUNC(date) 语法
这里是 Oracle TRUNC(date) 函数的语法:
TRUNC(date)
TRUNC(date, fmt)
参数
date-
必需的。需要截断的日期/日期时间表达式。 它必须是一个
DATE类型的值。 fmt-
可选的。它指定了截断的单位。如果未指定此参数,
date将被截断到天(DD)。
下表整理了 fmt 可用的值:
| 单位化模型 | 单位 |
|---|---|
CC, SCC |
比四位数年份的前两位数大一位数。 |
SYYYY, YYYY, YEAR, SYEAR, YYY, YY, Y |
年 |
IYYY, IYY, IY, I |
包含 ISO 8601 标准定义的日历周的年份。 |
Q |
季度。 |
MONTH, MON, MM, RM |
月份。 |
WW |
与一年的第一天相同的星期几。 |
IW |
与根据 ISO 8601 标准定义的日历周第一天相同的星期一。 |
W |
与一个月的第一天相同的星期几。 |
DDD, DD, J |
日 |
DAY, DY, D |
一周的开始日期。 |
HH, HH12, HH24 |
小时。 |
MI |
分钟。 |
返回值
Oracle TRUNC(date) 函数返回一个截断后的日期时间值。返回值总是 DATE 数据类型。
如果任意一个参数为 NULL, TRUNC(date) 将返回 NULL。
Oracle TRUNC(date) 示例
这里有几个展示了 Oracle TRUNC(date) 函数用法的示例。
基本用法
下面的语句按照默认的单位对 2023-02-12 11:59:59 进行截断:
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
SELECT
TRUNC(TO_DATE('2023-02-12 11:59:59', 'YYYY-MM-DD HH24:MI:SS'))
FROM dual;
输出:
TRUNC(TO_DATE('2023-02-1211:59:59','YYYY-MM-DDHH24:MI:SS'))
______________________________________________________________
2023-02-12这里,由于我们没有指定 fmt 参数, 2023-02-12 11:59:59 将被截断到天。
截断到年
Oracle TRUNC(date) 函数允许您将日期时间截断到年,请使用 YEAR 单位:
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
SELECT
TRUNC(DATE '2023-06-30', 'YEAR') "2023-06-30",
TRUNC(DATE '2023-07-01', 'YEAR') "2023-07-01"
FROM dual;
输出:
2023-06-30 2023-07-01
_____________ _____________
2023-01-01 2023-01-01月份
Oracle TRUNC(date) 函数允许您将日期时间截断到月,请使用 MONTH 单位:
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
SELECT
TRUNC(DATE '2023-02-15', 'MONTH') "2023-02-15",
TRUNC(DATE '2023-02-16', 'MONTH') "2023-02-16"
FROM dual;
输出:
2023-02-15 2023-02-16
_____________ _____________
2023-02-01 2023-02-01TRUNC(date) vs ROUND(date)
TRUNC(date) 用于截断一个日期,而 ROUND(date) 用于对日期四舍五入。下面的示例说明这一点:
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
SELECT
TRUNC(DATE '2023-07-01', 'YEAR') "TRUNC 2023-07-01",
ROUND(DATE '2023-07-01', 'YEAR') "ROUND 2023-07-01"
FROM dual;
输出:
TRUNC 2023-07-01 ROUND 2023-07-01
___________________ ___________________
2023-01-01 2024-01-01NULL 参数
如果任意一个参数为 NULL, TRUNC(date) 将返回 NULL。
SET NULL 'NULL';
SELECT
TRUNC(NULL, 'YEAR') NULL_1,
TRUNC(DATE '2023-02-15', NULL) NULL_2,
TRUNC(NULL, NULL) NULL_3
FROM dual;
输出:
NULL_1 NULL_2 NULL_3
_________ _________ _________
NULL NULL NULL在本示例中,我们使用 SET NULL 'NULL'; 语句将 NULL 值显示为 'NULL' 字符串。
结论
Oracle TRUNC(date) 是一个内置函数,它将给定的日期截断到指定的单位。