Jedna możliwość, jeśli musisz to robić wystarczająco często:dodaj do tabeli trzy kolumny obliczeniowe dla dnia, miesiąca, roku. Te kolumny są obliczane automatycznie na podstawie timestamp
kolumna i są to tylko wartości całkowite, więc są łatwe w użyciu w GROUP BY
.
Aby to zrobić, użyj tych instrukcji T-SQL:
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
Teraz możesz łatwo wybrać swoje dane na podstawie dowolnego dnia:
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