0

我希望有人能指出我需要做的正确方向。

我有一个 mysql 数据库,其中包含一个名为“StartDate”的日期值字段,其格式为“YYYY-MM-DD”。

所以,我已经使用 -

$results = $wpdb->get_results( "SELECT * FROM wp_myEventDates ORDER BY `StartDate` ASC" );

我想按月对事件进行分组,例如 6 月有 10 个事件,7 月有 12 个事件 -

我使用了 foreach 循环并测试了几种方法来输出日期并使用 var_dump 但我不确定如何操作结果。

示例一:

$event_id = $myevent->StartDate;
// var dump from event id gives me 
string(10) "2013-04-04" 

示例二:

$event_id = $myevent->StartDate;  
$dateArray = getdate(strtotime($event_id));
$mythingmonth = array($dateArray['mon']);
foreach ($mythingmonth as $monthsplit =>$myvalue) {
var_dump($myvalue);
//var dump from myvalue this 
int(4)
}     

我 100% 确定我会以错误的方式解决这个问题,我已经尝试过搜索和尝试,但我迷失了 - 所以如果有任何关于看什么的指示或建议,那就太棒了。

提前致谢。


4

2 回答 2

0

试试这个 :

SELECT Month(startdate),count(id) as nrOfEvents
FROM wp_myEventDates
GROUP BY Month(startdate)

但是再次阅读您的问题,我不确定这是否是您想要的。你能描述一下预期的结果吗?

编辑 :

如果您的活动持续数年,最好使用以下方法:

SELECT Month(startdate),Year(startdate),count(id) as nrOfEvents
FROM wp_myEventDates
GROUP BY Month(startdate),Year(startdate)
于 2013-05-24T11:29:23.450 回答
0

我对问题不太清楚,但是如果您尝试根据查询结果对数据库进行分组,我在这里为您提供示例,

$event_id = array ("2013-04-04","2013-04-04","2013-05-04","2013-04-04","2013-06-04");
foreach($event_id as $value)
{
   $value = explode('-',$value);
   $month[$value[1]][] = 'hi'; // you can add ur event name here instead of 'hi'
}
var_dump($month);

vardump($month) 给你下面的输出

array
 '04' => 
   array
     0 => string 'hi' (length=2)
     1 => string 'hi' (length=2)
     2 => string 'hi' (length=2)
 '05' => 
   array
     0 => string 'hi' (length=2)
 '06' => 
   array
     0 => string 'hi' (length=2)

和 vardump($month['04']); 会给你以下结果

array
 0 => string 'hi' (length=2)
 1 => string 'hi' (length=2)
 2 => string 'hi' (length=2)

而不是 foreach 中的 'hi' 可以添加作为查询结果的事件名称,您可以使用这种类型的数组按月收集事件

于 2013-05-24T12:13:48.363 回答