小编Car*_*rol的帖子

按星期几和每小时对SQL进行排序/分组

我有一个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条记录将出现"乱序".本周末记录(星期六下午)出现在本周初...而不是结束......它们属于哪里.

关于我做错了什么的任何想法?

sql sql-server group-by utc sql-order-by

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

group-by ×1

sql ×1

sql-order-by ×1

sql-server ×1

utc ×1