需要使用#次录音填充日期列表 按天分组的每一天。 这是我的问题: 午夜后记录的所有数据将进入第二天: 我需要它去前一天。
我试过了:
SELECT RecordedOnDate, COUNT(RecordedOnDate) AS RowCount, COUNT(SongID) AS [Total Amount]
FROM InfoTable
WHERE (RecordedOnDate > DateAdd('h', 5, #1/23/2011#)) AND (RecordedOnDate < DateAdd('h', 5, #1/24/2011#))
GROUP BY RecordedOnDate
ORDER BY RecordedOnDate DESC
但不能GROUP BY 感谢
答案 0 :(得分:2)
您要做的是将时间偏移5小时,以便它们在前一天“显示”。
SELECT
DateAdd('h', -5, RecordedOnDate) RecordedOnDate,
COUNT(RecordedOnDate) AS RowCount,
COUNT(SongID) AS [Total Amount]
FROM InfoTable
WHERE (RecordedOnDate > DateAdd('h', 5, #1/23/2011#)) AND (RecordedOnDate < DateAdd('h', 5, #1/24/2011#))
GROUP BY DateAdd('h', -5, RecordedOnDate)
ORDER BY RecordedOnDate DESC
根据需要修复您的WHERE子句,但它会在第二天凌晨5点到凌晨5点分组为“今天”
答案 1 :(得分:0)
这会有用吗?我试图先移动然后分组并按移位和舍入日期聚合。添加/更新WHERE
子句以过滤感兴趣的日期范围。
;WITH Shifted(sday, smonth, syear)
AS (
SELECT
DatePart(day, DateAdd('h', -5, RecordedOnDate)) sday,
DatePart(month, DateAdd('h', -5, RecordedOnDate)) smonth,
DatePart(year, DateAdd('h', -5, RecordedOnDate)) syear
FROM Table
)
SELECT
-- recreate the date
DateAdd(day, sday - 1, DateAdd(month, smonth - 1, DateAdd(Year, syear - 1900, 0))) RD,
-- aggregate the count for the shifted date
COUNT(*)
FROM Shifted
GROUP BY
DateAdd(day, sday - 1, DateAdd(month, smonth - 1, DateAdd(Year, syear - 1900, 0)))