Una posibilidad, si necesita hacer esto con la suficiente frecuencia:agregue tres columnas calculadas para el día, el mes y el año a su tabla. Esas columnas se calculan automáticamente en función de la timestamp
columna, y son solo valores enteros, por lo que son fáciles de usar en un GROUP BY
.
Para hacer esto, use estas declaraciones 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
Ahora, puede seleccionar fácilmente sus datos según el día que desee:
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