在php / mysql中将舍入时间精确到最近的15分钟

时间:2012-10-11 08:53:57

标签: php mysql

我有一个带有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。

2 个答案:

答案 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函数。