我有两列数据:
+-------------------------+-------------------------+
| StartTime | FinishTime |
+-------------------------+-------------------------+
| 2015.09.06 12:56:03 GMT | 2015.09.06 12:56:30 GMT |
| ... | ... |
+-------------------------+-------------------------+
我想要另一列来计算持续时间。
我在Tableau中使用了DataDiff函数,但是我收到了错误。
答案 0 :(得分:2)
根据您显示的数据,我猜你想要时间之间的秒数差异。你使用DATEDIFF()
是对的。 (我注意到你说DAT A DIFF,所以要小心你正在使用正确的方法。)
使用以下计算字段:
DATEDIFF('second', [StartTime], [FinishTime])
如果我在你想要的时间单位上猜错了,那么相应地调整第一个参数。
如果Tableau无法自动将StartTime
和EndTime
解析为日期时间,您可以使用DATEPARSE()
:
DATEPARSE("yyyy.MM.dd hh:mm:ss", [StartTime])
至于以小时,分钟和秒显示持续时间,DATEDIFF()
只返回一个数字,所以你必须自制一些东西。您需要创建自己的功能,以便根据需要设置持续时间的格式,但这里有一个快速示例,将持续时间显示为“hh:mm:ss”(您需要像我显示的那样创建一个计算字段以上以秒为单位查找持续时间):
RIGHT('0' + STR(FLOOR([Duration in Seconds]/60/60)), 2) + ':' +
RIGHT('0' + STR(FLOOR([Duration in Seconds]/60)), 2) + ':' +
RIGHT('0' + STR(FLOOR([Duration in Seconds])), 2)
在每一行上,您将持续时间(以秒为单位)除以适当的除数,以转换为小时,分钟或秒。然后你FLOOR
该号码来废弃小数。要处理单个数字,您将每个数字的前面连接一个'0',然后取结果字符串的右两个字符。 (RIGHT('027', 2)
产生'27'
,RIGHT('04', 2)
产生'04'
。)
答案 1 :(得分:0)
以下将输出(持续时间:1小时2分11秒)
"(持续时间:" +
STR(天花板(DATEDIFF('分钟',[start_date],[end_date])/ 60)-1)+" h" + STR(DATEDIFF('分钟',[start_date],[end_date]) - ((天花板(DATEDIFF('分钟',[start_date],[end_date])/ 60)-1)* 60))+" m" +
STR(DATEDIFF('秒',[start_date],[end_date])%60)+" s)"