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-01
TRUNC(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-01
NULL 参数
如果任意一个参数为 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)
是一个内置函数,它将给定的日期截断到指定的单位。