我有一个名为Device的表,当模式更改时,设备状态已被记录
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 ');
在参数通过的一段时间内,查找设备自动和手动的小时、分钟和秒的要求
例如,我想获得从22-03-2015 08:00:00
到23-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
(小时、分钟和秒只是一个例子,与不匹配
使用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'