我正在尝试按小时对查询进行分组和排序(24 小时格式)
我想检索过去 12 小时内的所有行,然后按小时分组,然后对它们进行正确排序 (11pm-12pm-1am-2pm = 22-23-1-2)。
我得到了一些结果,但是当切换到中午 12 点(23 点)到凌晨 1 点时遇到问题。见下文 : 查询:
SELECT Count(*) AS AlertCount,
HOUR(alert_timeraised) AS AlertHour
FROM aggregate_alerts
WHERE alert_timeraised > DATE_ADD(NOW(), INTERVAL -12 HOUR)
GROUP BY AlertHour
结果:
AlertCount AlertHour
"12" "0"
"15" "1"
"40" "2"
"14" "3"
"52" "4"
"16" "5"
"58" "6"
"23" "7"
"61" "8"
"92" "9"
"96" "10"
"15" "11"
"15" "23"
如您所见,23 是最后一个结果,但我应该是第一个 (23/previousday-1-2-3-4/currentday ...)
如果您有任何想法来处理这个问题...
仅供引用,alert_timeraised 的初始时间戳格式为:
2019-07-23 11:13:46
2019-07-22 23:20:29
非常感谢!
最佳答案
尝试按alert_timeraised 的所有不同部分(年、月、日、小时)进行分组和排序
SELECT Count(*) AS AlertCount,
YEAR(alert_timeraised) as YEAR,
MONTH(alert_timeraised) as MONTH,
DAY(alert_timeraised) as DAY,
HOUR(alert_timeraised) AS AlertHour
FROM
(
select '2019-07-23 11:13:46' as alert_timeraised union all
select '2019-07-22 23:20:29' as alert_timeraised
) t
#WHERE alert_timeraised > DATE_ADD(NOW(), INTERVAL -12 HOUR)
GROUP BY
YEAR(alert_timeraised),
MONTH(alert_timeraised),
DAY(alert_timeraised),
HOUR(alert_timeraised)
order by
YEAR(alert_timeraised),
MONTH(alert_timeraised),
DAY(alert_timeraised),
HOUR(alert_timeraised)
关于php - 按小时分组,然后正确排序 (22-23-0-1-2 ...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57160855/