如何在Tableau中一起添加两列(日期/时间)

问题描述 投票:1回答:2

我有一个从Excel导入到Tableau的数据集。在Excel中,数据列为“上午8:15:00”。当它被导入Tableau时,它现在的日期和时间为“12/30/1899 10:45:00 AM”。

我想要执行的是两个日期和时间列之间的附加问题。一个例子是:睡眠:12/30/1899 10:45:00吃:12/30/1899 00:45:00

睡眠+饮食应该产生10:40 + 00:45 = 11:30

经过大量谷歌搜索和视频观看,我还没有找到解决方案。

datetime tableau addition
2个回答
0
投票

创建计算的as such应该可以解决问题:

DATEADD(
'hour', DATEPART('hour', [Eating]), DATEADD(
'minute', DATEPART('minute', [Eating]), DATEADD(
'second', DATEPART('second', [Eating]), [Sleep])))

从那里,可以根据需要调整字段的时间显示:

右键单击字段名称>默认属性>日期格式


0
投票

您可以通过创建三个计算字段来实现所需的结果。让我们调用一个计算字段[小时]和另一个[分钟]。第三个字段将使用[小时]和[分钟]中的值以正确显示结果。让我们称之为第三个领域[睡眠+饮食]。

要创建[小时]:

//[hours] calculated field
DATEPART('hour', [Sleep])+ DATEPART('hour', [Eating])

要创建[分钟]:

 //[hours] calculated field
    DATEPART('minute', [Sleep])+DATEPART('minute', [Eating])

此时[小时]和[分钟]只是[睡眠]和[吃]的整数值的总和。要以您请求的格式显示这些总和,您需要有第三个计算字段来连接小时和分钟,并且还能够处理分钟加起来超过60或分钟的情况。加起来少于10. [Sleep + Eating]计算字段将实现此目的。

这是[Sleep + Eating]计算字段:

//[Sleep + Eating] calculated field
IF  [minutes]< 10  THEN STR([hours])+":0"+STR([minutes])
ELSEIF [minutes]< 60 THEN STR([hours])+":"+STR([minutes])
ELSEIF [minutes]>= 70 THEN STR([hours]+1)+":"+STR([minutes]-60)
ELSE STR([hours]+1)+":0"+STR([minutes]-60)
END

尝试将数据视为日期字段的其他解决方案(请参阅@Daniel Sims答案)如果小时数总和大于23,则可能会出现问题,结果会增加一天。例如,假设您在Excel中有这些值:

14:45:00 Eating: 12/30/1899 14:45:00

如果您使用我的解决方案,结果将是25:02。如果你使用@Daniel Sims的答案,结果将是12/31/1899 1:02:00 AM,我认为这不是你想要的。

© www.soinside.com 2019 - 2024. All rights reserved.