2014-07-11 3 views
2

나는 다음과 같이 현재 시간을 반환합니다 SQL 쿼리를 작성하는 것을 시도하고있다 시간이 14:00 경우 14:00 반환 - 다음과 같이 내가 지금까지 그럭저럭 한 15시SQL SELECT HH : MM - HH : - HH : MM : MM (+1)</p> <p>일예로</p> <p>HH : MM

:

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 서버를 2008

감사

답변

3

이 예입니다을 사용하고, 당신은 열 이름으로 @now 변수를 대체 할 수

declare @now datetime = getdate() 

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

SQL Fiddle demo

+0

(당신은 SQL 서버의 이전 버전이있는 경우, 두 번째 라인에 "= GETDATE()"고 이동해야 할 수도 있습니다) –

+0

네, 같은 라인에 기본 값을 할당하는 SQL Server 버전에서 작동 @MikeM – Kaf

+0

좋은 답변 ... 이전에 114를 사용하지 않았습니다. –

1

으로 시도 SQL Server 2012에 대한 FORMAT+ :

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

(SQL Server 2012 또는 2014의 경우) ... (그러나 OP는 2008이라고 말했습니다.) –

+0

아 맞습니다. 게시물의 맨 아래를 읽는 것이 좋습니다. @MikeM에게 감사드립니다. – Michael