如何按月对 PHP 中的 SQL 记录进行排序?

Posted

技术标签:

【中文标题】如何按月对 PHP 中的 SQL 记录进行排序?【英文标题】:How can I sort my SQL records in PHP by Month? 【发布时间】:2021-12-12 13:57:32 【问题描述】:

我的数据库中有一个表,用于存储统计数据。结构是这样的:

---------------------------------------------
| travelTimes                               |
---------------------------------------------
| ID       | INT(6)  | *Primary key*        |
| goesfrom | INT(6)  | *location ID*        |
| goesto   | INT(6)  | *location ID*        |
| length   | INT(6)  | *time it takes*      |
| time     | Date    | *date of the record* |
---------------------------------------------

我正在尝试在按time 列的月份分组的 php 页面上显示这些数据,并将这些数据加载到图表中(如果我有来自 3 个不同月份的记录,则应该有 3 个不同的图表)。

您认为这个问题的最佳解决方案是什么?

我尝试将表格加载到 PHP 数组(关联),并以这种方式比较日期,但据我了解,php 非常独特。所以这不起作用:

foreach($travelTimes as $travelTime)
    if(date("m", strtotime($travelTime["time"])) == date("m"))
        // I would sort here the current month's records
    

年末也有问题,因为我的尝试忽略了年份的变化。

【问题讨论】:

我认为您需要添加基于年份和月份的数据。 到目前为止您尝试过什么?你被困在哪里了?为什么不将ORDER BY 添加到您的查询中? @NicoHaase 我看不到 ORDER BY 在哪里可以帮助我比较 PHP 中的日期 您使用的是哪个 dbms? 将行添加到$chart["2020-01"][] = $travelTime; $chart["2020-02"][] = $travelTime; 之类的关联数组中,然后遍历$chart 数组...每个项目将是属于该年月的行数组。 【参考方案1】:

您的想法不错,因此我对其进行了调整,使其每月填充一个数组及其相关的 travelTimes:

$monthlyTravelTimes = [];
foreach($travelTimes as $travelTime) 
    $month = date("m", strtotime($travelTime["time"]);
    $monthlyTravelTimes[$month] = $travelTime;

您可以通过以下方式获取当月的旅行时间:

$monthlyTravelTimes[date('m')];

注意:这根本无法处理年份,但可以通过将 'm' 替换为 'Y-m' 轻松调整。

【讨论】:

【参考方案2】:

SELECT *, MONTH(time) as timeMonth FROM travelTimes ORDER BY timeMonth

未经测试但可能有效

【讨论】:

【参考方案3】:

有人添加了一个后来被删除的答案,但他的想法帮助找到了解决方案:

SELECT *, MONTH(time) as timeMonth, YEAR(time) as timeYear FROM travelTimes ORDER BY time;

有了这个,我可以简单地比较 PHP 中的字符串,例如:

if($travelTime["timeYear"] == "2021" && $travelTime["timeMonth"] == "10")

没有问题。

【讨论】:

向我道歉:/ 意外删除。添加回来

以上是关于如何按月对 PHP 中的 SQL 记录进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

按月对记录进行分组并计数 - Mongoose、nodeJs、mongoDb

如何按月对数组中的值进行分组?

在数据表中按月对数据库表中的数据进行分组

sql中如何把具体日期转化为按月排序?

在R中按月对行求和

powershell 按年/月对文件夹中的文件进行排序