GetClosestElem 函数

GetClosestElem 函数返回最接近给定时间戳记的第一个非空元素。还可以指定时间系列元素中的哪一列必须为非空以满足搜索条件。

语法

GetClosestElem(ts         TimeSeries, 
              tstamp       datetime year to fraction(5),
              cmp          lvarchar, 
              column_list  lvarchar default NULL,
              flags        integer default 0)
returns ROW
ts
要对其执行操作的时间系列。
tstamp
开始搜索的时间戳记。
cmp
用于确定开始搜索位置的与 tstamp 一起使用的比较运算符。cmp 的有效值包括:<、<=、>= 和 >。
column_list
要搜索包含一个或多个非空列的元素,请指定以竖线 (|) 分隔的列名的列表。如果任何列名在时间系列类型中不存在,那么将出现错误。

要搜索空元素,请将 column_list 设置为 NULL

flags
确定是否应返回隐藏的元素。tseries.h 中定义了 flags 参数的有效值。它们包括:
  • TS_CLOSEST_NO_FLAGS(无特殊标志)
  • TS_CLOSEST_RETNULLS_FLAGS(返回隐藏的元素)

描述

搜索算法 ts_closest_elem 如下:
  • 如果 cmp 是 <=、=、== 或 >= 中的任何一个,那么搜索在 tstamp 开始。
  • 如果 cmp 是 <,那么搜索会从 tstamp 之前的第一个元素开始。
  • 如果 cmp 是 >,那么搜索会从 tstamp 之后的第一个元素开始。
tstampcmp 参数用于确定搜索开始的位置。搜索以 cmp 指示的方向持续进行,直到找到符合条件的元素。如果没有符合条件的元素,那么返回值为 NULL
重要: 对于不规则的时间系列,不规则元素中的值在下一个元素出现之前保持不变。这意味着对不规则时间系列进行的任何“equals” 运算都会先查找 <=。如果 cmp 为 >= 且 <= 运算失败,那么运算将向前查找下一个元素;否则将返回 NULL

返回结果

满足所述条件的元素,即最接近给定时间戳记的非空元素。