如何通过UNIX时间戳获取当天登记的当前事件的数量,例如,2012年2月17日有2个事件,2012年2月19日有1个事件。它应该返回如下行:
Array
(
[0] => stdClass Object
(
[event_id] => 4
[total_events] => 2
)
[1] => stdClass Object
(
[event_id] => 18
[total_events] => 2
)
[2] => stdClass Object
(
[event_id] => 19
[total_events] => 1
)
)
前两项安排在彼此的同一天(2月17日),最后一项是在2月19日,同一天没有安排其他活动。
我试过这个方法,但它返回了这个:
Array
(
[0] => stdClass Object
(
[event_id] => 1
[total_events] => 1
)
[1] => stdClass Object
(
[event_id] => 2
[total_events] => 1
)
[2] => stdClass Object
(
[event_id] => 3
[total_events] => 1
)
)
这是我到目前为止所做的以下SQL,没有取得好成绩:
SELECT events.event_id,
SUM(IF(DATE_FORMAT(FROM_UNIXTIME(events.event_starts), '%y %m %d') = DATE_FORMAT(FROM_UNIXTIME(events.event_ends), '%y %m %d'), 1, 0)) AS total_events
FROM
(
scheduled_events events
)
WHERE ( events.event_starts >= 1328486400 AND events.event_ends <= 1329695940 )
GROUP BY events.event_id
两个UNIX时间戳的范围从下周的2月13日上午12:00到2月19日星期日晚上11点59分。
如果在下一个事件的当天发生事件,我如何检索返回一周中每一天的事件数的事件数。
答案 0 :(得分:0)
这应该让你开始。它应该返回两个时间戳内的每个event_id和同一天开始的所有其他event_id的COUNT
SELECT e1.event_id,
COUNT(DISTINCT e2.event_id)
FROM scheduled_events AS e1
INNER JOIN scheduled_events AS e2
ON e1.event_id!=e2.event_id
AND DATE(FROM_UNIXTIME(e1.event_starts))=DATE(FROM_UNIXTIME(e2.event_starts))
WHERE ( e1.event_starts >= 1328486400 AND e1.event_ends <= 1329695940 )
GROUP BY e1.event_id