您可以在日期(DATE
)、时间戳(TIMESTAMP
、TIMESTAMP WITH TIME ZONE
和 TIMESTAMP WITH LOCAL TIME ZONE
)和间隔(INTERVAL YEAR TO MONTH
和 INTERVAL DAY TO SECOND
)上执行许多算术运算。
OceanBase 根据以下规则计算结果:
NUMBER
常数。OceanBase 在内部将时间戳值转换为日期值,并将算术日期时间和间隔表达式中的 NUMBER
常量解释为天数。例如,SYSDATE
+1 是明天。SYSDATE
-7 是一周前。SYSDATE
+(10/1440)是十分钟之后。BINARY_FLOAT
和 BINARY_DOUBLE
操作数转换为 NUMBER
。DATE
值都包含一个时间成分,许多日期运算的结果都包含一个分数。此分数表示一天的一部分。例如,1.5 天是 36 个小时。OceanBase 内置函数还返回这些分数,以对 DATE
数据执行常见操作。例如,MONTHS_BETWEEN
函数返回两个日期之间的月数。结果的小数部分代表一个 31 天月份的那部分。DATE
值或数字值,但都不包含时区或小数秒部分,则:DATE
数据。数值乘以间隔例外,这将返回一个间隔。DATE
数据类型使用的内置函数时,OceanBase 将把非 DATE
值转换为 DATE
值。第一条语句失败,因为在一个有31天的月份上增加一个月,导致计算结果为 9 月 31 日,这不是有效的日期。 第二条语句失败,因为在仅每四年存在的日期上增加一年是无效的。但是,在 2 月 29 日之前加上四年是有效的,计算结果为2008年2月29日:
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;
SELECT TO_DATE("29-FEB-2004", "DD-MON-YYYY") + TO_YMINTERVAL("4-0") FROM DUAL;
TIMESTAMP WITH LOCAL TIME ZONE
,OceanBase 在执行算术运算时将日期时间值从数据库时区转换为 GMT,完成计算后再转换回数据库时区。对于 TIMESTAMP WITH TIME ZONE
,日期时间值始终为 GMT,因此无需进行转换。
在文档使用中是否遇到以下问题
更多建议
匿名提交