选择30天时间间隔数据的sql查询

选择30天时间间隔数据的sql查询,sql,date,Sql,Date,SQL查询未给出预期答案 SELECT CAST(PR.DateTimeStamp as date) AS PRDate,COUNT(PR.ID) AS PRCount FROM tbl_Purchase PR INNER JOIN tbl_PurchaseCategory PTC ON PR.ID = PTC.ID WHERE PR.DateTimeStamp BETWEEN DATEADD(DAY,-30,'2017-12-07 09:00:00') AND '2017-12-07 09

SQL查询未给出预期答案

SELECT CAST(PR.DateTimeStamp as date) AS PRDate,COUNT(PR.ID) AS PRCount
FROM tbl_Purchase PR
INNER JOIN tbl_PurchaseCategory PTC ON PR.ID = PTC.ID
WHERE PR.DateTimeStamp BETWEEN  DATEADD(DAY,-30,'2017-12-07 09:00:00') AND 
'2017-12-07 09:00:00' and PR.DepartmentID=1 and PTC.CategoryID=1 group by 
CAST(PR.DateTimeStamp as date) order by CAST(PR.DateTimeStamp as date)
我想选择像这样的数据

PRDate         PRCount

2017-12-07    3         // from 2017-12-08 09:00:00 to 2017-12-07 09:00:00
2017-12-06    31        // from 2017-12-07 09:00:00 to 2017-12-06 09:00:00
2017-12-05    10        // from 2017-12-06 09:00:00 to 2017-12-05 09:00:00
2017-12-04    23
2017-12-03    27
2017-12-02    15
2017-12-01    27
2017-11-30    39
2017-11-29    25
2017-11-28    27
2017-11-27    36
2017-11-26    30
2017-11-25    23
2017-11-24    18
2017-11-23    13
2017-11-22    16
2017-11-21    25
2017-11-20    15
2017-11-19    41
2017-11-18    11
2017-11-17    9
2017-11-16    19
2017-11-15    23
2017-11-14    17
2017-11-13    23
2017-11-12    20
2017-11-11    31
2017-11-10    29
2017-11-09    18
2017-11-08    29
2017-11-07    24
上面的查询正在验证我的数据


12至12时间间隔不是9至9

您应该从分组日期中减去9小时

SELECT 
    CAST( DATEADD(HOUR,-9, PR.DateTimeStamp) as date) AS PRDate
    , COUNT(PR.ID) AS PRCount
FROM tbl_Purchase PR
    INNER JOIN tbl_PurchaseCategory PTC ON PR.ID = PTC.ID
WHERE 
    PR.DateTimeStamp BETWEEN  DATEADD(DAY,-30,'2017-12-07 09:00:00') AND '2017-12-07 09:00:00' 
    AND PR.DepartmentID=1 and PTC.CategoryID=1 
group by 
    CAST(DATEADD(HOUR,-9, PR.DateTimeStamp) as date) 
order by 
    CAST(DATEADD(HOUR,-9, PR.DateTimeStamp) as date)

您的问题从一个格式合理的查询开始,然后从那里开始走下坡路。真正的问题是什么?如果您当前的查询有什么问题,您希望得到什么样的输出?查询没有问题,只是没有按照我的预期工作,我在下面添加了我的预期输出。我想要时间间隔为9:00到09:00的30天数据,但query向我提供第一个日期09:00到12:00的数据,以及剩余日期12:00到12:00的数据