2015-02-23 150 views
0

我试图从两个时间戳列(日期时间)差分从日期时间

获得时间差的总量我现在有一个表1设置如下所示:

  • Time_Line_Down =>日期时间
  • Time_Line_Ran =>日期时间
  • Total_Downtime =>计算与式柱:

    (当[Time_Line_Down] IS NULL然后NULL别的CONVERT情况下([VARCHAR],情况下,当[Time_Line_Ran] IS NULL然后NULL别的[Time_Line_Ran] - [Time_Line_Down]端,(108))端)

每次出现的一些情况,我复制这三列(我有更多的列,但问题是这个的)到另一个表2最初设置如下所示:

  • Time_Line_Down =>日期时间
  • Time_Line_Ran =>日期时间
  • Total_Downtime =>日期时间

然后我使用Excel电子表格从SQL Server到“获取外部数据”,并使用一个枢轴表与数据一起工作。

  • Time_Line_Down = 2015年2月20日12:32:40.000
  • Time_Line_Ran = 2015年2月20日12:34:40.000
  • Total_Downtime = 1900-01-01 00:02:00。000

所需的输出

我想要的数据透视表,以便能够给我停机时间总计从各行该表

比方说,这是45小时,五分钟,累积的停机时间三十秒就应该象(45:50:30)

问题

即使我在EXCEL数据透视表格式化Total_Downtimeh:mm:ss读取这样的:

  • Total_Downtime = 0时02分00秒

作为行累积和总计计算时间戳的“日期”部分是搞乱,结果是总超过24小时,

我已经试过

我改变了列Total_Downtime的数据类型格式表2到时间(0),以便它不会发送“日期”部分,只有时间戳的“时间”部分,它正在工作并读出00:02:00

但是现在我的数据透视表中excel的所有值都是0:00:00,不管SQL表中实际存在什么值。

有什么建议吗?

+0

我不会将您的数据类型更改为时间。几乎不可能确定两人跨越日期障碍的时间。你只有3个数据部分,你首先花几个小时做一个日期,然后用一个数分钟的modiff来获得分钟,然后用一个datediff秒60来获得秒数。应该非常简单。 – 2015-02-23 17:22:19

回答

1

您可以使用超过24小时的Excel时间格式[h]:mm:ss

或者,您可以使用SQL函数DATEDIFF以秒为单位获得总停机时间,然后将其转换为,但需要在Excel中显示它,例如,

case when [Time_Line_Down] IS NULL then NULL else case when [Time_Line_Ran] IS NULL then NULL else datediff(ss, Time_Line_Ran, Time_Line_Down) end end 

我不认为你需要在这里的CASE语句,你可以使用

datediff(ss, Time_Line_Ran, Time_Line_Down) 
+0

感谢您的快速响应,在Excel中更改时间格式并没有给出我期望的结果,因为现在显示的值为5774:11:47 ..我假设是由于“日期”部分。我目前正在使用像你和Sean Lange推荐的SQL函数DATEDIFF进行测试,我会让你知道结果。你是对的,如果Time_Line_Ran和Time_Line_Down列中的时间标记主要由于我的应用程序而缺失,那么case语句就是不计算Total_Downtime。 – 2015-02-23 17:38:04

0

谢谢大家的帮助,

我继续尝试的功能如DATEDIFF建议我改表1计算列公式和表2 Total_Downtime列数据类型为int。一旦导入到excel这个数值需要一些额外的计算。

原则上是最好的答案,并且应该为任何想要计算两个时间戳差异的人工作,如前所述,它非常简单。

但在我的情况下,我需要保持两件事情:

1)格式00:00:00列Total_Downtime在表1,改变为整数值使用DATEDIFF

2)枢轴表Total_Downtime列格式并[h]:毫米:在Excel SS(由TobyLL建议的),这需要几个计算以从秒

转换210

得知每次我从复制表1表2计算出的值(例如, 00:02:00)更改为1900-01-01 00:02:00.000,并且在导入到Excel时等于1.001388889时,我决定强制时间戳的“日期”部分为1899-12-31该Excel将只计算数据透视表中的“时间”(十进制)部分的总计。