2015-02-23 163 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將只計算數據透視表中的「時間」(十進制)部分的總計。