Một khả năng, nếu bạn cần làm điều này đủ thường xuyên:thêm ba cột được tính cho ngày, tháng, năm vào bảng của bạn. Các cột đó được tính toán tự động dựa trên timestamp
và chúng chỉ là các giá trị số nguyên, vì vậy chúng dễ sử dụng trong GROUP BY
.
Để thực hiện việc này, hãy sử dụng các câu lệnh T-SQL sau:
ALTER TABLE dbo.ROASTER_FEED ADD TSDay AS DAY(timestamp) PERSISTED
ALTER TABLE dbo.ROASTER_FEED ADD TSMonth AS MONTH(timestamp) PERSISTED
ALTER TABLE dbo.ROASTER_FEED ADD TSYear AS YEAR(timestamp) PERSISTED
Giờ đây, bạn có thể dễ dàng chọn dữ liệu của mình dựa trên bất kỳ ngày nào bạn muốn:
SELECT TSDay, TSMonth, TSYear, SUM(FEED) -- use AVG(FEED) for average values
FROM dbo.ROASTER_FEED
WHERE TSYear = 2011 AND TSMonth = 8 -- or whatever you want to grab from the table!
ORDER BY timestamp
GROUP BY TSDay, TSMonth, TSYear