0) 总结
下面看2个问题:
-
更新问题(DATETIME_DIFF):找出
NewStartTime 和NewEndTime 两个时间字段之间的差异,并合并Date 字段;
-
原始问题(TIME_DIFF):查找
StatTime 和EndTime 这两个时间字段之间的差异。
1) 更新(2020 年 9 月 17 日日期和时间更新)
使用包含PARSE_DATETIME 和DATETIME_DIFF 函数的Updated Date Time Functions 解决方案更新了答案:
1.1) 升级日期字段
将Date 字段升级为较新的日期字段类型,并确保NewStartTime 和NewEndTime 字段设置为Text。
添加了一个 GIF 来详细说明:
1.2) DATETIME_DIFF
复制粘贴下面的Calculated Field 以创建一个以秒为单位的值,以显示两个字段之间的差异:
DATETIME_DIFF(PARSE_DATETIME("%Y/%m/%d%I:%M:%S %p",CONCAT(Date,NewEndTime)), PARSE_DATETIME("%Y/%m/%d%I:%M:%S %p",CONCAT(Date,NewStartTime)), SECOND)
1.3) 类型 (DATETIME_DIFF)
Number > Duration (Sec.)
添加了New Page to the Report 和 GIF 来演示:
2) 原帖
可以通过以下3个步骤来实现:
2.1) 类型(HH:MM 字段)
默认情况下,字段应该被检测为文本字段,如果不确保它们被设置为数据源中的文本字段,则如下所示:
2.2) Time_DIFF
复制粘贴下面的Calculated Field 以创建一个以秒为单位的值,以显示两个字段之间的差异:
((CAST(REGEXP_EXTRACT(EndTime,"^(\\d+):")AS NUMBER)*60*60) + (CAST(REGEXP_EXTRACT(EndTime,"^\\d+:(\\d+)")AS NUMBER)*60) + NARY_MAX(CAST(REGEXP_REPLACE(EndTime,".*(PM)$","43200")AS NUMBER),0)) -
((CAST(REGEXP_EXTRACT(StatTime,"^(\\d+):")AS NUMBER)*60*60) + (CAST(REGEXP_EXTRACT(StatTime,"^\\d+:(\\d+)")AS NUMBER)*60) + NARY_MAX(CAST(REGEXP_REPLACE(StatTime,".*(PM)$","43200")AS NUMBER),0))
2.3) 类型 (Time_DIFF)
Numeric > Duration (Sec.)
Google Data Studio Report 和一个 GIF 来详细说明: