10.3 计算两个日期时间的相差秒数 / 分钟数
计算两个日期时间数据相差的分钟数。
对于每个 ID, Value 第一次出现 1 开始累计到 0 为止,如果 0 一直没有出现,就和系统时间比。部分数据如下:
ID | Time | Value |
---|---|---|
1 | 2020/07/08 15:00:00 | 1 |
1 | 2020/07/08 15:02:00 | 1 |
1 | 2020/07/08 15:04:00 | 1 |
1 | 2020/07/08 15:06:00 | 0 |
1 | 2020/07/08 15:08:00 | 0 |
1 | 2020/07/08 15:10:00 | 1 |
1 | 2020/07/08 15:20:00 | 0 |
2 | 2020/07/08 15:02:00 | 1 |
函数 now()获得系统此刻的日期时间。函数 interval (datetimeExp1,datetimeExp2) 计算两个日期时间型数据的间隔,选项 @s 返回相差的秒数。
脚本:
A | |
---|---|
1 | =T(“table.txt”) |
2 | =A1.group(ID).(~.group@o1(Value)|[null]) |
3 | =A2.news(~.len()\2;ID,(s=A2.~(#*2-1).Time):StartTime, interval@s(s,ifn(A2.~(#*2).Time,now()))/60:CumTime) |
A1 读取数据文件
A2 按照 ID 分组,并在每组里按照相邻 Value 同值再合并分组,取每个小组第一条记录,为了后续计算方便,每大组补足一个 null
A3 取每组奇数行的 Time 为开始时间,取对应偶数行的 Time 为结束时间来计算间隔时长,如果对应偶数行为 null,则取当前系统时间为结束时间来计算间隔时长
运行结果:
ID | StartTime | CumTime |
---|---|---|
1 | 2020/07/08 15:00:00 | 6.0 |
1 | 2020/07/08 15:10:00 | 10.0 |
2 | 2020/07/08 15:02:00 | 28.0 |