Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ADDTIME

📄字数 1.2K
👁️阅读量 加载中...

功能描述

在日期或时间值上增加时间间隔(如天数、小时、分钟等)。该函数与 SUBTIME() 函数功能相反。

语法格式

sql
ADDTIME(expr1, INTERVAL expr2 unit)

输入参数

  • expr1:日期或时间值,DATETIMEDATETIMETIME WITH TIME ZONEDATETIME WITH TIME ZONE 类型,或能隐式转换为上述类型的其他类型。
  • expr2:增加的时间间隔值,INTERVAL unit 是时间间隔类型中的关键字,其中 unit 表示时间间隔的单位,INTERVAL unit 参数的信息,包括 unit 单位的完整列表,请参考 时间间隔类型。值可以为负数,表示减去的时间间隔。

提示

  • NULL 无具体的类型,所以当任意参数为 NULL 时,可能会产生异常 E10100 候选函数出现多义性,需要手动为参数指定具体的形参类型,如:ADDTIME(NULL::TIME, NULL::INTERVAL HOUR)
  • expr1 为动态参数(如预编译语句参数)或字符串类型(VARCHAR)时,服务端自动匹配参数类型,可使用 CAST()expr1 转换为期望的类型,如:ADDTIME(CAST('20:10:10' AS TIME), INTERVAL 1 HOUR)

输出结果

输出结果类型由输入参数类型决定,任意输入参数为 NULL 时,输出结果为 NULL

输出结果和输入参数的对应关系如下:

第一个参数的类型第二个参数的类型(unit关键字)输出结果
DATEDAYDATE
DATEMONTHDATE
DATEYEARDATE
DATE[注1]DATETIME
TIME/TIME WITH TIME ZONESECONDTIME/TIME WITH TIME ZONE
TIME/TIME WITH TIME ZONEMINUTETIME/TIME WITH TIME ZONE
TIME/TIME WITH TIME ZONEHOURTIME/TIME WITH TIME ZONE
TIME/TIME WITH TIME ZONEDAYTIME/TIME WITH TIME ZONE
DATETIME/DATETIME WITH TIME ZONE[注2]DATETIME/DATETIME WITH TIME ZONE

提示

  • [注1] 表示包含 DAYMONTHYEAR 关键字外的其他 INTERVAL 类型。
  • [注2] 表示任意 INTERVAL 类型。

示例

sql
-- 在'2020-12-31 23:59:59'时间上增加 1 秒
SQL> SELECT ADDTIME('2020-12-31 23:59:59', INTERVAL '1' SECOND);

+--------------------------+
|          EXPR1           |
+--------------------------+
| 2021-01-01 00:00:00.000  |
+--------------------------+

-- 在'2018-12-31'时间上增加 1 天
SQL> SELECT ADDTIME('2018-12-31', INTERVAL '1' DAY);

+--------------------------+
|          EXPR1           |
+--------------------------+
| 2019-01-01 00:00:00.000  |
+--------------------------+

-- 在'23:59:59'时间上增加 1 天 2 小时 3 分钟 40 秒 123 毫秒,天数被忽略,从小时开始计算
SQL> SELECT ADDTIME('23:59:59'::TIME, INTERVAL '1 2:3:40.123' DAY TO SECOND);

+--------------+
|    EXPR1     |
+--------------+
| 02:03:39.123 |
+--------------+