[英]Difference in minutes from datetime
我正在嘗試從兩個時間戳列(日期時間)獲得總的時差
我目前有一個類似於以下內容的表1設置:
Time_Line_Down
=>日期時間 Time_Line_Ran
=>日期時間 Total_Downtime
=>計算公式為:
(當[Time_Line_Down]為NULL則為NULL否則CONVERT([varchar],當[Time_Line_Ran]為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-02-20 12:32:40.000 Time_Line_Ran
= 2015-02-20 12:34:40.000 Total_Downtime
= 1900-01-01 00:02:00.000 期望的輸出
我希望數據透視表能夠使該表中所有行的停機時間總計
假設這是45小時50分30秒的累積停機時間,它應該顯示為(45:50:30)
問題 :
即使我將excel數據透視表中的Total_Downtime
列的格式設置為h:mm:ss
,也是如此:
Total_Downtime
= 0:02:00 隨着行的累積和總計的計算,時間戳的“日期”部分混亂,結果是超過24小時
我嘗試過的
我將表2中的 Total_Downtime
列的數據類型格式更改為time(0),以使它不會發送時間戳的“日期”部分,而僅發送“時間”部分,並且可以讀取00:02: 00
但是現在,無論該SQL表中實際上是什么值,該列上excel上我的數據透視表中的所有值都是0:00:00。
有什么建議么?
您可以使用Excel時間格式[h]:mm:ss
,該時間格式可以超過24小時。
或者,您可以使用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)
謝謝大家的幫助,
我按照建議嘗試了函數DATEDIFF,將表1計算列公式和表2 Total_Downtime列數據類型更改為int。 導入excel后,此數值需要一些額外的計算。
原則上講,這是最好的答案,並且對於任何試圖從兩個時間戳計算出差異的人都應該很有效,如前所述。
但是在我的情況下,我需要維護兩件事:
1) 表1中的 Total_Downtime列的格式00:00:00,在使用DATEDIFF時已更改為整數值
2)Excel中的數據透視表Total_Downtime列格式[h]:mm:ss(由TobyLL建議),需要幾步計算才能從秒轉換
解
在得知每次我從表1復制到表2時 ,計算值(例如00:02:00)都更改為1900-01-01 00:02:00.000,並且將其導入Excel時等於1.001388889,因此我決定強制將時間戳的“日期”部分設置為1899-12-31,以便Excel僅使用“時間”(十進制)部分來計算數據透視表中的總計。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.