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 |