Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL选择HH:MM-HH:MM_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

SQL选择HH:MM-HH:MM

SQL选择HH:MM-HH:MM,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我正在尝试编写一个SQL查询,该查询将返回当前时间,如下所示: 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)

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

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'
高:毫米-高:毫米(+1)

例如,如果时间是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

任何协助都将不胜感激

我正在使用SQLServer2008


谢谢

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

declare @now datetime = getdate()

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

试试SQL Server 2012+:

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

(如果您有较旧版本的SQL Server,可能必须将“=getdate()”移到第二行)@MikeM是的,在同一行中指定默认值在2008年及其后的SQL Server版本中有效。回答不错。。。以前未使用过114:)(如果在SQL Server 2012或2014中)。。。(但OP说2008年)啊,是的。把文章读到底是件好事。谢谢你的更正@MikeM。