我正在尝试编写一个SQL查询,它将返回当前时间,如下所示:
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。
由于
答案 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')