SQL SELECT HH:MM - HH:MM

时间:2014-07-11 12:30:48

标签: sql sql-server sql-server-2008

我正在尝试编写一个SQL查询,它将返回当前时间,如下所示:

HH:MM - HH:MM(+1)

E.g。如果时间是14:00,它将返回14:00 - 15:00

我已设法达到以下目的:

SELECT TOP (30) 
    DATEADD(HOUR, DATEDIFF(HOUR, 0, QUEUE_TIME.QueueDate), 0) AS 'DateAdded',
    CAST(CONVERT(VARCHAR(2), DATEPART(HH, QUEUE_TIME.QueueDate), 108) AS VARCHAR(2)) + ' - ' + 
    CAST(CONVERT(VARCHAR(2), DATEPART(HH, QUEUE_TIME.QueueDate), 108) + 1 AS VARCHAR(2)) AS Interval, 
    QUEUE_TYPE.Name, QUEUE_TIME.QueueTypeId, 
    MAX(QUEUE_TIME.QueuedTimeInSec / 60) AS 'WaitingTimeInSec', 
    CAST(ROUND(AVG(QUEUE_TIME.FlowRateWhenJoinedPerMin), 1) AS numeric(36, 2)) AS AvgFlowRate
FROM
    QUEUE_TIME 
INNER JOIN
    QUEUE_TYPE ON QUEUE_TIME.QueueTypeId = QUEUE_TYPE.Id
WHERE
    (QUEUE_TIME.QueueDate >= '11/07/2014 00:00') 
    AND (QUEUE_TIME.IsFreeFlowing = '0') 
    AND (QUEUE_TIME.QueueTypeId = '3')
GROUP BY 
    DATEADD(HOUR, DATEDIFF(HOUR, 0, QUEUE_TIME.QueueDate), 0), 
    DATEPART(HOUR, QUEUE_TIME.QueueDate), QUEUE_TYPE.Name, QUEUE_TIME.QueueTypeId
ORDER BY 
    'DateAdded'

这将返回如下,例如如果是早上8点,它将返回8-9。但我需要它的格式为08:00 - 09:00。

任何帮助都将不胜感激。

我正在使用SQL Server 2008。

由于

2 个答案:

答案 0 :(得分:3)

这是一个示例,您可以使用列名替换@now变量:

declare @now datetime = getdate()

select convert(varchar(5), @now, 114) + ' - ' + 
       convert(varchar(5), dateadd(hour, 1, @now), 114) yourColumn

<强> SQL Fiddle demo

答案 1 :(得分:1)

尝试使用FORMAT for SQL Server 2012 +:

SELECT FORMAT(GETDATE(), 'HH:mm') + '-' + FORMAT(DATEADD(HH, 1, GETDATE()), 'HH:mm')