目标:
要使用此列表显示数据:
Hour
-----
2
2,5
1
问题:
是否有可能将StartTime和EndTime列转换为特定的数据类型,然后对X1-X2进行计算
CREATE TABLE Data
(
StartTime VARCHAR(5),
EndTime VARCHAR(5),
)
GO
INSERT INTO Data(StartTime,EndTime)
SELECT '10:00','12:00' UNION ALL
SELECT '13:30','16:00' UNION ALL
SELECT '14:00','15:00' UNION ALL
GO
答案 0 :(得分:1)
SELECT DATEDIFF(mi, CONVERT(DATETIME, StartTime), CONVERT(DATETIME, EndTime))
/ 60.0 AS Hour
FROM Data
它适用于您的示例数据,但您应该检查EndTime是否可能是第二天,例如:
StarTime:22:30
结束时间:01:20
这种情况可能吗?如果是,则必须存储开始和结束时间的日期,而不仅仅是小时。
答案 1 :(得分:1)
已编辑:获取小数点数
SELECT ROUND(CAST( Mins AS FLOAT)/60,2) AS [hour]
FROM (
SELECT DATEDIFF(minute, CAST(StartTime AS TIME),CAST(EndTime AS TIME)) AS Mins
FROM Data
) A
答案 2 :(得分:0)
如果您使用的是SQL-SERVER 2008,那么为什么不使用time对象呢?然后,您可以运行适当的时间比较功能。如果没有,您仍然可以通过converting使其工作到日期时间并运行比较功能。我相信只需要一个时间到日期时间的转换将导致日期作为最短日期。