1

我有一个名为 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: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

(小时、分钟和秒只是一个例子,不会与

4

1 回答 1

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'
于 2015-04-02T05:02:30.223 回答