我有一个从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
经过大量谷歌搜索和视频观看,我还没有找到解决方案。
创建计算的as such应该可以解决问题:
DATEADD(
'hour', DATEPART('hour', [Eating]), DATEADD(
'minute', DATEPART('minute', [Eating]), DATEADD(
'second', DATEPART('second', [Eating]), [Sleep])))
从那里,可以根据需要调整字段的时间显示:
右键单击字段名称>默认属性>日期格式
您可以通过创建三个计算字段来实现所需的结果。让我们调用一个计算字段[小时]和另一个[分钟]。第三个字段将使用[小时]和[分钟]中的值以正确显示结果。让我们称之为第三个领域[睡眠+饮食]。
要创建[小时]:
//[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中有这些值:
如果您使用我的解决方案,结果将是25:02。如果你使用@Daniel Sims的答案,结果将是12/31/1899 1:02:00 AM,我认为这不是你想要的。