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