表达式 | 结果 |
---|---|
DATE – DATETIME | INTERVAL |
DATETIME – DATE | INTERVAL |
DATE + 或 – INTERVAL | DATETIME |
在表 1 所示的情况下,第一次将 DATE 值转换为其对应的 DATETIME 等值,然后使用算术规则对表达式进行求值。
数据库语言环境定义缺省 DATE 和 DATETIME 格式。对于缺省语言环境“美国英语”,这些格式以“mm/dd/yy”表示 DATE 值,“yyyy-mm-dd hh:MM:ss”表示 DATETIME 值。
要将 DATE 和 DATETIME 值表示为字符串,字符串中字段的顺序必须为所需顺序。换句话说,当期望 DATE 值时,字符串必须使用 DATE 格式,当期望 DATETIME 值时,字符串必须使用 DATETIME 格式。例如,可以将字符串 10/30/2008 用作 DATE 字符串,但不能用作 DATETIME 字符串。相反,必须将 2008-10-30 或 08-10-30 用作 DATETIME 字符串。
在非缺省语言环境中,文字 DATE 和 DATETIME 字符串必须与语言环境定义的格式相匹配。有关更多信息,请参阅《GBase 8s GLS 用户指南》。
可以使用 DBDATE 和 GL_DATE 环境变量来定制数据库服务器期望的 DATE 格式。可以使用 DBTIME 和 GL_DATETIME 环境变量来定制数据库服务器期望的 DATETIME 格式。有关更多信息,请参阅 DBDATE 环境变量和 DBTIME 环境变量。有关所有这些环境变量的更多信息,请参阅《GBase 8s GLS 用户指南》。
还可以从一个 DATE 值中减去另一个 DATE 值,但结果是正或负的 INTEGER 天数计数,而不是 INTERVAL 值。如果需要 INTERVAL 值,那么可以使用 UNITS DAY 运算符来将 INTEGER 值转换为 INTERVAL DAY TO DAY 值,否则在相减之前使用 EXTEND 来将其中一个 DATE 值转换为 DATETIME 值。
(DATE ('5/2/2007') - DATE ('4/6/1968')) UNITS DAY Result: INTERVAL (12810) DAY(5) TO DAY
EXTEND (DATE ('5/2/2007'), YEAR TO MONTH) - DATE ('4/6/1969') Result: INTERVAL (39-01) YEAR TO MONTH
因为 DATETIME 值先出现,所以结果 INTERVAL 精度是 YEAR TO MONTH。如果 DATE 值先出现,那么结果 INTERVAL 精度将是 DAY(5) TO DAY。