型为 DATETIME (或 TIMESTAMP) 的列或程序变量 SYSDATE 关键字CURRENT 关 键字TO_DATE() 函数 其运算结果可以是以下两种类型: l 正的或负的 INTERVAL 值。第⼀个 DATETIME 值确定结果的精度,它包 含与第⼀个操作数相同的时间单位。 l 正的或负的浮点数(以天为单位)。这种情况只能通过 JDBC 接⼜返回。 例如, 假定当前系统时间为 2017 年 1 ⽉ 3 ⽇ 14:00:00 , 执⾏以下语句, ⽤户通 过 JDBC 接⼜得到⼀个以天为单位的浮点数: SELECT SYSDATE-TO_DATE(‘20170102 08:00:00’,’YYYY-MM-DD HH24:MI:SS’) FROM DUAL; Result: 1.25(通过 JDBC 接⼜返回) 如果第⼆个 DATETIME 值(或 TIMESTAMP 值)具有的字段⽐第⼀个值少,那 么会⾃ 动增加第⼆个操作数的精度以与第⼀个值相匹配。 在下⾯的⽰例中,从 DATETIME YEAR TO MINUTE 值中减去 DATETIME YEAR TO HOUR 值,从⽽得到正的时间间隔值 60 天 1 ⼩时 30 分钟。由于第⼆个操 作数中不包括分 钟,所以在执⾏减法之前,数据库服务器将第⼆个操作数的分 钟值设置为 0。 DATETIME (2003-9-30 12:30) YEAR TO MINUTE - DATETIME (2003-8-1 11) YEAR TO HOUR Result: INTERVAL (60 01:30) DAY TO MINUTE 如果第⼆个 DATETIME 操作数的字段⽐第⼀个操作数多(不管额外字段的精 度是⼤于 还是⼩于第⼀个操作数中的字段), 在计算过程中都会忽略第⼆个值中 附加的时间单位字 段。这指⽰第⼆个⽇期⽐第⼀个晚。
What’s new in GBase 8s V8.8
南大通用数据技术股份有限公司 31/60
DATETIME (2005-9-30) YEAR TO DAY - DATETIME (10-1) MONTH TO DAY Result: INTERVAL (-1) DAY TO DAY [假定当前年为 2005] 您可以使⽤ mi_datetime_compare() 函数⽐较两个 DATETIME 值。⽤ INTERVAL 值处理 DATETIME 算术INTERVAL 操作数可以将 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 天的年份。 EXTEND 函数DATETIME 数据类型EXTEND 函数在⼤多数情况下,当操作数 没有相同的 精度时数据库服务器⾃动调整计算。但是,在某些上下⽂中,必须 显式调整⼀个值的精确 才能执⾏计算。如果加上或减去的 INTERVAL 值具有未 包括在 DATETIME 值中的字段,那 么必须使⽤ EXTEND 函数来增加 DATETIME 值的精度。 (有关 EXTEND 函数的更多信息, 请参阅 GBase 8s SQL 指南:语法 中 的 Expression 段。) TO 关键字EXTEND 函数YEAR 关键字EXTEND 函数例如,不能从上⾯⽰例 中具有 YEAR TO DAY 字段限定符的 DATETIME 值中减去 INTERVAL MINUTE TO
What’s new in GBase 8s V8.8
南大通用数据技术股份有限公司 32/60
MINUTE 值。但是,如下 ⾯的⽰例所⽰,可以使⽤EXTEND 函数来执⾏此计算: EXTEND (DATETIME (2008-8-1) YEAR TO DAY, YEAR TO MINUTE) - INTERVAL (720) MINUTE(3) TO MINUTE Result:DATETIME (2008-07-31 12:00) YEAR TO MINUTE 字段限定符EXTEND 函数EXTEND 函数允许您显式将 DATETIME 精度从 YEAR TO DAY 增加⾄ YEAR TO MINUTE。这使得数据库服务器能够执⾏计算,并 且⽣成 YEAR TO MINUTE 的扩展精度。