gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 07:33:12 24 4
gpt4 key购买 nike

我有一个 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 条记录将出现“乱序”。周末记录(周六下午)
出现在一周的开始......而不是结束......他们所属的地方。

知道我做错了什么吗?

最佳答案

浮点数学是不精确的。乘以 24.0邀请边界错误。

而不是添加数字

GROUP BY (DatePart(WEEKDAY, SavedOn)*24.0) + DatePart(HOUR, SavedOn)  

对两个字段进行排序:
GROUP BY DatePart(WEEKDAY, SavedOn), DatePart(HOUR, SavedOn) 

关于sql - 按星期几和小时对 SQL 进行排序/分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7138994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com