CURRENT 运算符返回带有今日的日期和时间的 DATETIME 值,展示当前时刻。
如果您未指定 DATETIME 限定符,则缺省的限定符为 YEAR TO FRACTION(3)。当数据库服务器从操作系统获取当前时间时,USEOSTIME 配置参数指定它是否使用亚秒精度。要获取更多关于 USEOSTIME 配置参数的信息,请参阅您的 GBase 8s 管理员参考手册。
CREATE TABLE new_acct (col1 INT, col2 DATETIME YEAR TO DAY DEFAULT CURRENT YEAR TO DAY);
始终在当前数据库所在的数据库服务器中为 CURRENT 求值。如果当期数据库在远程数据库服务器中,则从远程主机返回值。
SQL 不是过程的语言,且 CURRENT 可能不以在语句中它的位置的词典次序执行。在 SQL 语句的执行中,您不应使用 CURRENT 来标记开始、终止、特定的点。
如果您在单个语句中使用 CURRENT 运算符超过一次,则可能由 CURRENT 的每一实例返回相同的值。您不可依靠 CURRENT 来在它每次执行时返回不同的值。
当指定 CURRENT 的 SQL 语句启动执行时,该返回值基于系统时钟且是固定的。例如,从 EXECUTE FUNCTION(或 EXECUTE PROCEDURE)语句调用的 SPL 函数之内,对 CURRENT 的任何调用都返回当 SPL 函数启动时系统时钟的值。
在 UNIX™ 和 Linux™ 系统上,通过 CURRENT 运算符返回的值的精度由它的 DATETIME 限定符决定,精度范围可从单个时间单位(诸如 MONTH TO MONTH)直到 YEAR TO FRACTION (5)。然而,在 Windows™ 上的系统时钟仅返回亚秒精度。即使您在 DATETIME 限定符中指定 "FRACTION(5)",Windows 上的 CURRENT 运算符也不支持高于 "FRACTION(3)" 的精度。
如果您的平台不提供以亚秒精度的当前时间返回的系统调用,则 CURRENT 为 FRACTION 字段返回零。
DELETE FROM cust_calls WHERE res_dtime < CURRENT YEAR TO MINUTE; SELECT * FROM orders WHERE DAY(ord_date) < DAY(CURRENT); SELECT * FROM cust_calls WHERE call_dtime BETWEEN '2007-1-1 00:00:00' AND CURRENT;
要获取更多信息,请参阅 DATETIME 字段限定符。