用 INTERVAL 值处理 DATETIME

可以将 INTERVAL 值与 DATETIME 值相加或从 DATETIME 值中减去。在这两种情况下,结果都是 DATETIME 值。如果将 INTERVAL 值与 DATETIME 值相加,那么值的顺序不重要;但是,如果进行减法运算,那么 DATETIME 值必须在前面。加或减正的 INTERVAL 值会使 DATETIME 结果时间推后或提前。下面示例中的表达式使日期提前 3 年 5 个月:
DATETIME (2000-8-1) YEAR TO DAY
      + INTERVAL (3-5) YEAR TO MONTH

Result: DATETIME (2004-01-01) YEAR TO DAY
要点: 估计加或减的逻辑。请注意,有 28、29、30 或 31 天的月份以及有 365 或 366 天的年份。

在大多数情况下,当操作数没有相同的精度时数据库服务器自动调整计算。但是,在某些上下文中,必须显式调整一个值的精确才能执行计算。如果加上或减去的 INTERVAL 值具有未包括在 DATETIME 值中的字段,那么必须使用 EXTEND 函数来增加 DATETIME 值的精度。(有关 EXTEND 函数的更多信息,请参阅 GBase 8s SQL 指南:语法 中的 Expression 段。)

例如,不能从上面示例中具有 YEAR TO DAY 字段限定符的 DATETIME 值中减去 INTERVAL MINUTE TO MINUTE 值。但是,如下面的示例所示,可以使用 EXTEND 函数来执行此计算:
EXTEND (DATETIME (2008-8-1) YEAR TO DAY, YEAR TO MINUTE)
      - INTERVAL (720) MINUTE(3) TO MINUTE

结果:DATETIME (2008-07-31 12:00) YEAR TO MINUTE

EXTEND 函数允许您显式将 DATETIME 精度从 YEAR TO DAY 增加至 YEAR TO MINUTE。这使得数据库服务器能够执行计算,并且生成 YEAR TO MINUTE 的扩展精度。