我有一个SQL Server 2005表,其中包含具有UTC/GMT日期字段的记录.我需要记录GROUPed BY和ORDERed的"星期几"和"一天中的小时".给7*24 = 168组.输出看起来像:
Sun 12am
Sun 1am
Sun 2am
.... etc
Mon 12am
Mon 1am
.... etc
.... etc
Sat 10pm
Sat 11pm
Run Code Online (Sandbox Code Playgroud)
一切正常,直到我尝试将东西转换为我当地的时区.在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)
Run Code Online (Sandbox Code Playgroud)
或者在以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)
Run Code Online (Sandbox Code Playgroud)
无论哪种方式...... 5条记录将出现"乱序".本周末记录(星期六下午)出现在本周初...而不是结束......它们属于哪里.
关于我做错了什么的任何想法?