SET CURRENT TEMPORAL BUSINESS_TIME 语句

SET CURRENT TEMPORAL BUSINESS_TIME 语句用于更改 CURRENT TEMPORAL BUSINESS_TIME 特殊寄存器的值。

调用当前时间业务时间

此语句可嵌入应用程序中或者以交互方式发出。 它是可动态准备的可执行语句。

授权当前时间业务_时间

不需要执行任何操作。

当前时间业务时间的语法

阅读语法图跳过可视化语法图SETCURRENT TEMPORAL BUSINESS_TIME=NULL表达式

当前时间业务时间描述

NULL
指定空值。
表达式
指定一个返回空值或以下内置数据类型之一的值的表达式:
  • 时间戳记
  • 字符串
  • 图形字符串

如果表达式是一个字符串或图形字符串,则必须满足以下要求:

  • 它不能是CLOB或DBCLOB。
  • 表达式的值必须是一个有效的时间戳字符串或图形字符串表示。
  • 表达的结果必须转换为 TIMESTAMP(12)。

表达式可以包含以下任何支持的运算符:

  • 常量
  • 专用寄存器
  • 可变(宿主变量、SQL参数、SQL变量或全局变量)
  • 标量函数,其参数为支持的操作数
  • CAST 规范,其中,强制类型转换操作数是受支持的操作数
  • 使用算术运算符和操作数的表达式

有关更多信息,请参阅:

备注:当前时间设置 业务时间

事务
SET CURRENT TEMPORAL BUSINESS_TIME 语句不是可提交操作。 ROLLBACK语句对CURRENT TEMPORAL BUSINESS_TIME没有影响。
对其他特殊登记册的影响
CURRENT TEMPORAL BUSINESS_TIME 特殊寄存器的设置不会影响其他特殊寄存器,例如 CURRENT DATE 和 CURRENT TIMESTAMP 特殊寄存器。

示例:当前时间业务时间

将特殊寄存器设置为有效值的示例
以下两个语句将当前临时业务时间特殊寄存器设置为“ 2008-01-06-00.00.00.000000000000 ”。
SET CURRENT TEMPORAL BUSINESS_TIME = TIMESTAMP('2008-01-01') + 5 DAYS ;
SET CURRENT TEMPORAL BUSINESS_TIME = '2008-01-06-00.00.00.000000000000';
特殊寄存器设置如何影响后续SQL语句的示例
在以下示例中,第一个语句将 CURRENT TEMPORAL BUSINESS_TIME 特殊寄存器设置为上个月。 假设表 att1 是一个应用程序期间的时间表。 当前时间业务时间特殊寄存器的设置会影响 att1 的更新。
SET CURRENT TEMPORAL BUSINESS_TIME = CURRENT TIMESTAMP - 1 MONTH
UPDATE att1 SET c1 = 5 WHERE pk = 100
假设 att1 表格中有bt_begin和bt_end列,用于指示BUSINESS_TIME时段的开始和结束。 在这个例子中, Db2 对UPDATE语句的解释如下:
UPDATE att1 SET c1 = 5 WHERE pk = 100
AND bt_begin <= CURRENT TEMPORAL BUSINESS_TIME
AND bt_end > CURRENT TEMPORAL BUSINESS_TIME
设置特殊寄存器使其不影响后续SQL语句的示例
以下语句将 CURRENT TEMPORAL BUSINESS_TIME 特殊寄存器设置为空值。 后续引用申请期间临时表的SQL语句不受CURRENT TEMPORAL BUSINESS_TIME特殊寄存器的影响。
SET CURRENT TEMPORAL BUSINESS_TIME = NULL