2015-04-02 38 views
1

之間的時間我都在設備狀態已經得到了當模式改變的SQL Server 2014 - 尋找活動的日期

CREATE TABLE MSTR.DEVICE_STATUS_HISTORY 
(device_id int, MODE varchar(5) ,CHANGED_TIME datetime); 

insert into MSTR.DEVICE_STATUS_HISTORY 
(DEVICE_ID,MODE,CHANGED_TIME) 
values (17,'AUTO','2015-03-21 19:30:16.440'), 
(17,'MANUAL','2015-03-21 22:20:45.880'), 
(17,'AUTO','2015-03-24 11:58:18.990'), 
(33,'MANUAL','2015-03-22 17:57:26.670'), 
(33,'AUTO','2015-03-24 18:05:59.483 '), 
(33,'MANUAL','2015-03-24 19:26:16.210'), 
(33,'AUTO','2015-03-25 15:41:14.663 '); 

要求找小時,分鐘和秒記錄的通話設備表自動和手動一段時間內參數傳遞

For Eg我想獲得從22-03-2015 08:00:0023-03-2015 16:45:35的自動/手動期間...任何人都可以幫助寫這個查詢。

結果我米期待是

Device Status Hours minutes Seconds 
-------------------------------------------------------------------  
17 --> Auto  5 Hours 10 Minutes 2 seconds 
17--> Manual 2 Hours 11 Minutes 10 Seconds 
33--> Auto  8 Hours 10 Minutes 2 seconds 
33--> Manual 12 Hours 11 Minutes 10 Seconds 

(的小時,分​​鍾和秒爲只是一個例子將不會與

+1

我建議使用' DATETIME2(3)''DATETIME''因爲後者有一些非常嚴格的限制(日期範圍,精度只有3.33ms等) – 2015-04-02 05:12:23

回答

0

匹配使用DATEPART

SELECT DEVICE_ID 
     ,MODE 
     ,CONVERT(VARCHAR(2), DATEPART(HOUR, CHANGED_TIME)) + ' Hours' AS Hours 
     ,CONVERT(VARCHAR(2), DATEPART(MINUTE, CHANGED_TIME)) + ' Minutes' AS Minutes 
     ,CONVERT(VARCHAR(2), DATEPART(SECOND, CHANGED_TIME)) + ' Seconds' AS Seconds 
FROM MSTR.DEVICE_STATUS_HISTORY 
WHERE CHANGED_TIME <= '2015-03-22 08:00:00' 
AND CHANGED_TIME >= '2015-03-21 16:45:35' 
+0

**結果我希望是設備狀態小時分鐘秒 17 - >汽車5小時10分2秒 17 - >手冊2小時11分10秒 33 - >自動8小時10分2秒 33 - >手冊12小時11分鐘10秒 (小時,分鐘和秒僅作爲示例,與** – 2015-04-02 05:16:40

+1

@UvarajVijayan不匹配:請***停止***將所有內容寫入*** BOLD!*** – 2015-04-02 05:27:13

+0

查詢以上不會給我持續時間。狀態的持續時間將成爲下一行小時,分鐘和秒的領先 - 這一行是小時,分鐘和秒。 – 2015-04-02 06:04:24