Сортировка / группировка SQL по дням недели и часам дня

У меня есть таблица SQL Server 2005, содержащая записи с полем даты UTC / GMT. Мне нужно, чтобы записи СГРУППИРОВАЛИ и ЗАПОРЯДОВАНЫ по «дню недели» и «часу дня». Даем 7 * 24 = 168 групп. Результат будет выглядеть так:

Sun 12am
Sun  1am
Sun  2am
.... etc
Mon 12am
Mon  1am
.... etc
.... etc
Sat 10pm
Sat 11pm

Все работает нормально, пока я не попытаюсь преобразовать данные в мой местный часовой пояс. Выполнение преобразования внутри SQL:

SELECT MIN(Key),MIN(SavedOn), 
FROM MyTable 
GROUP BY (DatePart(WEEKDAY, SavedOn)*24.0) + DatePart(HOUR, SavedOn) - (5.0/24.0)
ORDER BY (DatePart(WEEKDAY, SavedOn)*24.0) + DatePart(HOUR, SavedOn) - (5.0/24.0)

Или выполнение преобразования в моем собственном коде ПОСЛЕ сортировки / получения записей в формате UTC:

SELECT MIN(Key),MIN(SavedOn), 
FROM MyTable 
GROUP BY (DatePart(WEEKDAY, SavedOn)*24.0) + DatePart(HOUR, SavedOn)  
ORDER BY (DatePart(WEEKDAY, SavedOn)*24.0) + DatePart(HOUR, SavedOn) 

(my own math here)

В любом случае ... 5 записей будут отображаться "не по порядку". Конец недели рекорды (сб PM) появляются в начале недели ... не в конце ... где они принадлежат.

Есть идеи, что я делаю неправильно?

6
задан Carol 21 August 2011 в 14:52
поделиться