我有一个带有time
字段的MySQL表,用于存储商业广告的发布时间。我需要按照15分钟的时间对它们进行分组并显示。
示例:
|comm1|comm2 |comm3|
--------------------------------
|8:00- 8:15 | 2 | 5 | 0 |
--------------------------------
|8:15- 8:30 | 0 | 0 | 1 |
--------------------------------
|8:30- 8:45 | 4 | 1 | 3 |
--------------------------------
|8:45- 9:00 | 4 | 5 | 2 |
--------------------------------
|... | . | . | . |
--------------------------------
等到24:00!所以,我需要做两件事:
1)全天15分钟的分组,
2)将商业广告的运行时间缩短到最接近的时间段。
有什么想法吗?我只能使用PHP / MySQL。
答案 0 :(得分:3)
试试这个 -
SELECT
SEC_TO_TIME((TIME_TO_SEC(time_field) DIV 900) * 900) AS round_time
FROM table
900为60秒* 15分钟。
答案 1 :(得分:0)
如果您对桌子一无所知,那就很难说了。但假设您有一个unix时间戳字段,您可以像这样得到起始小时+四分之一:
SELECT concat( hour( from_unixtime( time ) ) , ':', floor( minute( from_unixtime( time ) ) %4 ) *15 ) FROM table
在这种情况下,time
是您的unix时间戳字段。如果您有时间/日期时间字段,则可以删除FROM_UNIXTIME函数。