SQL语句获得两天而不是午夜的每日总计

问题描述 投票:0回答:1

我最近写了一个查询来获取一个月内的每日总数。查询工作正常,但从午夜到午夜都可以。我需要找到从上午7:15到第二天上午7:15的总数。我们从7:15开始进行三班倒。

SELECT CONVERT(datetime,CAST(t_stamp AS DATE)), COUNT(bottles) AS 'Good Bottles'
FROM bottles
WHERE t_stamp
    BETWEEN starrt
    AND end
GROUP BY CAST(t_stamp AS DATE)
ORDER BY CAST(t_stamp AS DATE) ASC
sql sql-server reporting-services sql-server-ce
1个回答
0
投票

只需减去一个偏移量。一种简单的方法是:

SELECT CAST(DATEADD(minute, -(7 * 60 + 15), t_stamp) AS DATE),
       COUNT(bottles) AS GoodBottles
FROM bottles
WHERE t_stamp BETWEEN starrt AND end
GROUP BY CAST(DATEADD(minute, -(7 * 60 + 15), t_stamp) AS DATE)
ORDER BY CAST(DATEADD(minute, -(7 * 60 + 15), t_stamp) AS DATE) ASC;

请注意,end对于列而言是一个非常糟糕的名称,因为它是SQL关键字。

© www.soinside.com 2019 - 2024. All rights reserved.