duration

语法

duration(X)

详情

将一个字符串标量转换为 DURATION 类型。表示一个时间区间。
注:
  • 用于分组的时间区间单位应需不小于时间列的单位。

  • 时间单位区分大小写,例如:M 表示月份,m 表示分钟;若分组的时间区间单位为 M,时间列需要通过函数 month 转换为对应月份。

  • DURATION 类型数据之间不能进行任何运算。例如,不能进行比较运算:duration('20ms') >= duration('10ms')

参数

X 是一个字符串,为一个数字与时间单位所组成。支持以下时间单位:y, M, w, d, B, H, m, s, ms, us, ns 和由四个大写英文字母构成的交易日历标识(duration 函数不会校验交易日历文件是否存在于 marketHolidayDir 中)。例如:"2y", "3M", "30m", "100ms", "3XNYS"等。

例子

y=duration("20H")
y

返回:20H

typestr(y)

返回:DURATION

duration("3XNYS")

返回:3XNYS

不指定时间单位,取时间列 time 的单位 s:

t=table(take(2018.01.01T01:00:00+1..10,10) join take(2018.01.01T02:00:00+1..10,10) join take(2018.01.01T08:00:00+1..10,10) as time, rand(1.0, 30) as x);
select max(x) from t group by bar(time, 5);
bar_time max_x
2018.01.01T01:00:00 0.8824
2018.01.01T01:00:05 0.8027
2018.01.01T01:00:10 0.572
2018.01.01T02:00:00 0.8875
2018.01.01T02:00:05 0.8542
2018.01.01T02:00:10 0.4287
2018.01.01T08:00:00 0.9294
2018.01.01T08:00:05 0.9804
2018.01.01T08:00:10 0.2147

指定单位为 m,对时间列按照1分钟进行分组:

select max(x) from t group by bar(time, 1m);
bar_time max_x
2018.01.01T01:00:00 0.8824
2018.01.01T02:00:00 0.8875
2018.01.01T08:00:00 0.9804