首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP/mysql:如何显示按时间排序和按日期分组的记录?

PHP/mysql:如何显示按时间排序和按日期分组的记录?
EN

Stack Overflow用户
提问于 2011-06-22 13:52:21
回答 7查看 3.2K关注 0票数 2

我需要显示按日期分组并按时间排序的记录。在mysql表中,我有一个名为entry_time的字段,其中存储了php time()值。有什么想法是最紧凑、最简单的方法吗?

例如:我需要一个像这样的显示器:

代码语言:javascript
复制
21st April
3:00 pm
3:50 pm

22 April
5:00 am
4:00 pm
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-06-22 14:17:26

粗略的半伪码:

代码语言:javascript
复制
$records = /* SELECT * FROM `records` ORDER BY `entry_time` */;

$date = null;
foreach ($records as $record) {
    $currentDate = date('Ymd', $record['entry_time']);
    if ($currentDate != $date) {
        printf('<h1>%s</h1>', date('Y-m-d', $record['entry_time']));
    }
    $date = $currentDate;

    echo date('H:i', $record['entry_time']);
}
票数 2
EN

Stack Overflow用户

发布于 2011-06-22 14:16:21

如果您使用PHP处理查询结果,请考虑编写一个简单的查询来按日期对记录进行排序:

代码语言:javascript
复制
SELECT NameOfMyThing, MyDateField FROM MyTable ORDER BY MyDateField DESC

然后使用PHP读取结果:

代码语言:javascript
复制
$last_day = '';
while ($row = $query_result->fetch()) {
    $date = new DateTime($row->['MyDateField']);

    $day = $date->format('j F');     // '9 April'
    $time = $date->format('g:i a');  // '9:05 am'

    if ($day != $last_day) {
        print $day . "\n";
        $last_day = $day;
    }

    print $time . " " . $row->['NameOfMyThing'];
}

这里的想法是记住您看到的最后一天,并且只在日期发生变化时输出日期。

(代码未经测试,仅针对可读性进行了优化)。

票数 1
EN

Stack Overflow用户

发布于 2011-06-22 13:56:45

有一个多维数组。

代码语言:javascript
复制
$datetime = array("April 21st" => array("5:00a.m", "4:00p.m"), "April 22nd" => array(...));

然后,您可以分别基于日期和时间进行排序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6435496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档