我有一张桌子,当汽车进入停车场时我会记录,我需要将记录提前半小时。 比如我得到了
id, time date
1, 10:01 2016-05-30
2, 10:15 2016-05-30
3, 10,29 2016-05-30
4, 10:31 2016-05-30
5, 10:45 2016-05-30
6, 11:00 2016-05-30
7, 11:11 2016-05-30
8, 11:15 2016-05-30
所以在我的情况下,我会得到记录:3,6和8
现在我使用的是:
.....
SELECT id, MAX(fecha) AS fecha, DATE_FORMAT(MAX(m.fecha), '%H:%i:%s') AS hora
FROM estacionamientos
WHERE (DATE_FORMAT(fecha, '%H:%i:%s') BETWEEN '15:30:00' AND '16:00:00')
AND (DATE_FORMAT(fecha, '%Y-%m-%d') = '2016-05-30')
UNION
SELECT id, MAX(fecha) AS fecha, DATE_FORMAT(MAX(m.fecha), '%H:%i:%s') AS hora
FROM estacionamientos
WHERE (DATE_FORMAT(fecha, '%H:%i:%s') BETWEEN '16:00:01' AND '16:30:00')
AND (DATE_FORMAT(fecha, '%Y-%m-%d') = '2016-05-30')
.....
ORDER BY hora DESC
但有没有比创建48个工会更好的方法呢?
答案 0 :(得分:0)
好的,我找到了一种方法,通过将其与unix_timestamp分组:
SELECT id, fecha, DATE_FORMAT(fecha, '%H:%i:%s') AS hora
FROM estacionamientos
WHERE (DATE_FORMAT(fecha, '%H:%i:%s') BETWEEN '00:00:00' AND '23:59:59')
AND (DATE_FORMAT(fecha, '%Y-%m-%d') = '2016-05-30')
GROUP BY
UNIX_TIMESTAMP(fecha) DIV 1800
ORDER BY fecha DESC
希望这有助于将来的任何人。