Oracle ROUND(date) 函数使用指南
Oracle ROUND(date)
是一个内置函数,它将给定的日期四舍五入到指定的单位。
Oracle ROUND(date)
语法
这里是 Oracle ROUND(date)
函数的语法:
ROUND(date)
ROUND(date, fmt)
参数
date
-
必需的。需要四舍五入的日期/日期时间表达式。 它必须是一个
DATE
类型的值。 fmt
-
可选的。它指定了四舍五入的单位。如果未指定此参数,
date
将被四舍五入到最近的天。
下表整理了 fmt
可用的值:
单位化模型 | 单位 |
---|---|
CC , SCC |
比四位数年份的前两位数大一位数。 |
SYYYY , YYYY , YEAR , SYEAR , YYY , YY , Y |
年(7 月 1 日向上舍入)。 |
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 ROUND(date)
函数返回一个四舍五入后的值。返回值总是 DATE
数据类型。
如果任意一个参数为 NULL
, ROUND(date)
将返回 NULL
。
Oracle ROUND(date)
示例
这里有几个展示了 Oracle ROUND(date)
函数用法的示例。
基本用法
下面的语句按照默认的单位对 2023-02-12 11:59:59
进行四舍五入:
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
SELECT
ROUND(TO_DATE('2023-02-12 11:59:59', 'YYYY-MM-DD HH24:MI:SS'))
FROM dual;
输出:
ROUND(TO_DATE('2023-02-1211:59:59','YYYY-MM-DDHH24:MI:SS'))
______________________________________________________________
2023-02-12
这里,由于我们没有指定 fmt
参数, 2023-02-12 11:59:59
将被舍入到最近的天。并且因为它早于 12 点,因此时间部分被舍去,返回了当天。
让我们再看一个时间晚于 12 点的值:
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
SELECT
ROUND(TO_DATE('2023-02-12 12:01:01', 'YYYY-MM-DD HH24:MI:SS'))
FROM dual;
输出:
ROUND(TO_DATE('2023-02-1212:01:01','YYYY-MM-DDHH24:MI:SS'))
______________________________________________________________
2023-02-13
这里,由于时间晚于 12 点,因此返回了下一天。
Oracle ROUND(date)
函数允许您将日期时间四舍五入到指定的单位。请继续看下面的示例。
四舍五入到年
Oracle ROUND(date)
函数允许您将日期时间四舍五入到年,请使用 YEAR
单位:
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
SELECT
ROUND(DATE '2023-06-30', 'YEAR') "2023-06-30",
ROUND(DATE '2023-07-01', 'YEAR') "2023-07-01"
FROM dual;
输出:
2023-06-30 2023-07-01
_____________ _____________
2023-01-01 2024-01-01
在本示例中,2023-06-30
被向下舍入到 2023-01-01
, 2023-07-01
被向上舍入到 2024-01-01
。
月份
Oracle ROUND(date)
函数允许您将日期时间四舍五入到月,请使用 MONTH
单位:
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
SELECT
ROUND(DATE '2023-02-15', 'MONTH') "2023-02-15",
ROUND(DATE '2023-02-16', 'MONTH') "2023-02-16"
FROM dual;
输出:
2023-02-15 2023-02-16
_____________ _____________
2023-02-01 2023-03-01
在本示例中,2023-02-15
被向下舍入到 2023-02-01
, 2023-02-16
被向上舍入到 2023-03-01
。
NULL 参数
如果任意一个参数为 NULL
, ROUND(date)
将返回 NULL
。
SET NULL 'NULL';
SELECT
ROUND(NULL, 'YEAR') NULL_1,
ROUND(DATE '2023-02-15', NULL) NULL_2,
ROUND(NULL, NULL) NULL_3
FROM dual;
输出:
NULL_1 NULL_2 NULL_3
_________ _________ _________
NULL NULL NULL
在本示例中,我们使用 SET NULL 'NULL';
语句将 NULL
值显示为 'NULL'
字符串。
结论
Oracle ROUND(date)
是一个内置函数,它将给定的日期四舍五入到指定的单位。