我通过SQL Query从SQL表CONFIRMATION构建每小时报告。查询绝对运行正常并给出正确的结果如下:
SELECT DATEPART(hh, CONFIRMATION.DATECOMPLETE) AS hour, sum( CONFIRMATION.QUANTITY) Units
FROM CONFIRMATION
WHERE CONFIRMATION.DATECOMPLETE >= '11/18/2015'
GROUP BY DATEPART(hh, CONFIRMATION.DATECOMPLETE)
我想将小时改为以下而不是小时数:
Hour Units
10:00 - 11:00 4
11:00-12:00 8
我怎样才能做到这一点?
由于
答案 0 :(得分:2)
您可以将日期时间组件转换为字符串以格式化10:00-11:00
。然后,您可以通过在小时组件中添加1来计算结束时间,并在午夜时将模24加起来。
CONVERT(varchar(2),DATEPART(hh,CONFIRMATION.DATECOMPLETE)) + ':00-' + CONVERT(varchar(2), (DATEPART(hh,CONFIRMATION.DATECOMPLETE)+1) % 24) + ':00'
答案 1 :(得分:1)
使用连接将部分日期放在一起时,datename()
比datepart()
要好得多:
SELECT (DATENAME(hour, c.DATECOMPLETE) + ':00-' +
DATENAME(hour, DATEADD(hour, 1, c.DATECOMPLETE)) + ':00'
) as period,
SUM(c.QUANTITY) as Units
FROM CONFIRMATION c
WHERE c.DATECOMPLETE >= '2015-11-18'
GROUP BY (DATENAME(hour, c.DATECOMPLETE) + ':00-' +
DATENAME(hour, DATEADD(hour, 1, c.DATECOMPLETE)) + ':00'
);
另外: