---
title: "日期时间 DATE 和间隔 INTERVAL 的计算 - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: 日期时间 DATE 和间隔 INTERVAL 的计算 日期（DATE）、时间戳（TIMESTAMP、TIMESTAMP WITH TIME ZONE 和 TIMESTAMP WITH LOCAL TIME ZONE）和间隔（INTERVAL YEAR TO MONTH 和 INTERVAL DAY TO SECOND…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.5.0

# 日期时间 DATE 和间隔 INTERVAL 的计算

更新时间：2026-03-23 11:47:46

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.0/zh-CN/700.reference/500.sql-reference/100.sql-syntax/300.common-tenant-of-oracle-mode/300.basic-elements-of-oracle-mode/100.built-in-data-types-of-oracle-mode/400.date-time-and-interval-data-types-of-oracle-mode/800.calculation-of-date-time-and-interval-of-oracle-mode.md)  

日期（DATE）、时间戳（TIMESTAMP、TIMESTAMP WITH TIME ZONE 和 TIMESTAMP WITH LOCAL TIME ZONE）和间隔（INTERVAL YEAR TO MONTH 和 INTERVAL DAY TO SECOND）数据类型支持算术运算。本文主要介绍日期时间 DATE 和间隔 INTERVAL 的计算规则。

OceanBase 数据库根据以下规则计算结果：

- 在日期和时间戳值（而非间隔值）的算术运算中可以使用 `NUMBER` 常量。OceanBase 数据库在内部将时间戳值转换为日期值，并将算术日期时间和间隔表达式中的 `NUMBER` 常量解释为天数。例如，`SYSDATE` +1 是明天。`SYSDATE`-7 是一周前。`SYSDATE` +（10/1440）是十分钟之后。

  #### 注意

  日期或时间戳值不能进行乘法或除法运算。
 - OceanBase 数据库将 `BINARY_FLOAT` 和 `BINARY_DOUBLE` 操作数转换为 `NUMBER`。
 - 每个 `DATE` 值都包含一个时间成分，许多日期运算的结果都包含一个分数。此分数表示一天的一部分。例如，1.5 天是 36 个小时。OceanBase 内置函数还返回这些分数，以对 `DATE` 数据执行常见操作。例如，`MONTHS_BETWEEN` 函数返回两个日期之间的月数。结果的小数部分代表一个 31 天月份的那部分。
 - 如果一个操作数是 `DATE` 值或数字值，但都不包含时区或小数秒部分，则：

     - OceanBase 数据库将其他操作数转换为 DATE 数据。数值乘以间隔运算除外，将返回一个间隔。
     - 如果另一个操作数具有时区值，则 OceanBase 数据库在返回的值中使用当前会话时区。
     - 如果另一个操作数具有小数秒数值，则小数秒数值将丢失。
 - 当将时间戳、时间间隔或数字值传递给仅限于 `DATE` 数据类型使用的内置函数时，OceanBase 数据库将把非 `DATE` 值转换为 `DATE` 值。
 - 当间隔计算返回日期时间值时，结果必须是实际的日期时间值，否则数据库将返回错误。示例如下：

  ```sql
  SELECT TO_DATE("31-AUG-2004','DD-MON-YYYY") + TO_YMINTERVAL("0-1") FROM DUAL;
  SELECT TO_DATE("29-FEB-2004','DD-MON-YYYY") + TO_YMINTERVAL("1-0") FROM DUAL;

  ```

  第一条语句在一个有 31 天的月份上增加一个月，导致计算结果为 9 月 31 日，这不是有效的日期，执行失败。第二条语句在仅每四年存在的日期上增加一年是无效的，执行失败。但是，在 2 月 29 日之前加上四年是有效的，计算结果为 `2008年2月29日`：

  ```sql
  SELECT TO_DATE("29-FEB-2004", "DD-MON-YYYY") + TO_YMINTERVAL("4-0") FROM DUAL;

  ```
 - 下表是日期时间算术运算的矩阵。"---"表示不支持的操作。

  ![p179242](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/7110319361/p367602.png)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
