Php 使用时间戳MySQL按月解析SQL结果

Php 使用时间戳MySQL按月解析SQL结果,php,mysql,sql,arrays,timestamp,Php,Mysql,Sql,Arrays,Timestamp,我对SQL有一个小问题。我需要选择行的ID,并按月将它们分组到数组或其他什么东西中?我有一个时间戳栏。 如果有这样的行: ID Timestamp 1 blalba(1.10.2017) 2 blabla(2.10.2017) 3 blabla(1.5.1996) 输出结果如下 array( [5.1996] => array([3]), [10.2017] => array([1,2]); ) 或者类似的事情。 在PHP中使用一些PHP库是否可以实现这一点?或者我

我对SQL有一个小问题。我需要选择行的ID,并按月将它们分组到数组或其他什么东西中?我有一个时间戳栏。 如果有这样的行:

ID Timestamp
1  blalba(1.10.2017)
2  blabla(2.10.2017)
3  blabla(1.5.1996)
输出结果如下

array(
  [5.1996] => array([3]),
  [10.2017] => array([1,2]);
)
或者类似的事情。
在PHP中使用一些PHP库是否可以实现这一点?或者我必须实现我自己的类来完成这项工作吗?

您可以在MySQL端通过按月/年排序来处理这一问题:

SELECT
    ID, Timestamp
FROM yourTable
ORDER BY
    DATE_FORMAT(Timestamp, '%Y-%m');

此查询将向PHP返回一个结果集,该结果集将被排序,以便将同一月份和年份中的所有记录聚集在一起。然后,您可以迭代此结果集,并根据需要处理记录。

您可能正在查找


“但是同一个月发生在两个不同的年份呢?”TimBiegeleisen刚刚意识到。好的。当表名为order,“id”是我需要存储的列,date_created是带有时间戳的列时,如何管理SQL?当我尝试运行此SQL输出时,在第行%Y-%m处的“按日期排序的订单组格式时间戳”附近是否存在此错误语法错误2@JohnczekGROUP BY显示在我的查询中的任何位置?我的建议是,您只需执行一个常规的PHP MySQL查询,然后对结果进行排序,这样您就可以一次处理一个月。这是“order BY DATE_FORMATTimestamp”附近的一个正确语法错误,第3行的%Y-%m表示您的PHP代码有问题。上面的查询应该在MySQL上运行。它的错误来自于类似于PHPMyadmin的管理员工具。我还没有在我的申请中试过。
select group_concat(id separator ', ') as myList,
DATE_FORMAT(Timestamp, '%Y-%m') from <YOUR_TABLE>
GROUP BY DATE_FORMAT(Timestamp, '%Y-%m');