MySQL GROUP BY UNIX TIMESTAMP

Sto*_*ler 7 php mysql timestamp group-by aggregate-functions

我正在尝试从MySQL数据库中获取许多行,并在发布之日对它们进行分组.

最终结果我想要以下..

星期一 - 第1条 - 第2条 - 第3条

星期二 - 第1条 - 第2条

星期三 - 第1条 - 第2条 - 第3条 - 第4条

等等,我不确定如果没有PHP做额外的工作,这是否可以在MySQL中完成.

这是我到目前为止的查询,但似乎没有按天分组.

SELECT 
cms_news.news_id,
cms_news.news_title,
cms_news.news_date,
cms_news.news_category,
cms_news.news_source,
cms_news.news_type,
cms_news.news_content
FROM 
cms_news cms_news,
GROUP BY 
DAYOFMONTH(FROM_UNIXTIME(cms_news.news_date)) 
ORDER BY 
cms_news.news_date DESC
Run Code Online (Sandbox Code Playgroud)

谢谢.

Sal*_*n A 1

使用如下查询以正确的顺序获取数据:

SELECT
DAYNAME(FROM_UNIXTIME(cms_news.news_date)) AS DayName,
cms_news.*
FROM cms_news
ORDER BY DAYOFWEEK(FROM_UNIXTIME(cms_news.news_date)), cms_news.news_date
Run Code Online (Sandbox Code Playgroud)

DAYOFWEEK返回 1 到 7 之间的数字(1 = 星期日),因此您的结果将在星期日到星期六进行排序。DAYNAME返回日期的字面名称(星期日、星期一...)。然后,您可以使用 PHP 对数据进行分组和显示:

$DayName = "";
while($row = mysql_fetch_assoc($query)) {
    if ($DayName != $row['DayName']) {
        $DayName  = $row['DayName']; 
        echo "<br>\n" . $DayName . ": ";
    } 
    echo $row['news_title'] . ", ";
}
Run Code Online (Sandbox Code Playgroud)