【发布时间】:2019-11-14 11:48:31
【问题描述】:
我有一个常规的帖子表,它有一个日期时间字段。我想获取特定日期范围内的帖子。
例如我希望在 Nov 10, 2019 和 Nov 13, 2019 之间创建的所有帖子作为一组帖子,以及在其他日期范围内创建的另一组帖子,例如在 Jan 1, 2019 和 Jan 15,2019 之间创建的帖子。
我想要的是这样的:
[
"Nov 10,2019-Nov 13,2019" => [['id'=>1,'text'=>'something'],['id'=>2,'text'=>'something'],...],
"Jan 1,2019-Jan 15,2019" => [['id'=>1,'text'=>'something'],['id'=>2,'text'=>'something'],...],
...
]
是否可以使用单个查询?
我知道我可以使用 GROUP BY DATE(dateTimeField) 之类的方式将它们组合在一起。
但是如何按日期范围对其进行分组?
编辑:我目前拥有的:
SELECT * FROM posts WHERE ( (datetime >= '2019-11-10 00:00:00' AND datetime <= '2019-11-13 23:59:59') OR (datetime >= '2019-01-01 00:00:00' AND datetime <= '2019-01-15 23:59:59')) LIMIT 0,50
这是我的查询,我知道我可以为此目的使用 BETWEEN,但我认为这不是问题。
问题是如何按这样的范围分组:
SELECT * FROM posts WHERE ( (datetime >= '2019-11-10 00:00:00' AND datetime <= '2019-11-13 23:59:59') OR (datetime >= '2019-01-01 00:00:00' AND datetime <= '2019-01-15 23:59:59')) LIMIT 0,50 GROUP BY THE_RANGE_SPECIFIED_IN_WHERE_CLAUSE
我不想要这个:
SELECT * FROM posts WHERE ( (datetime >= '2019-11-10 00:00:00' AND datetime <= '2019-11-13 23:59:59') OR (datetime >= '2019-01-01 00:00:00' AND datetime <= '2019-01-15 23:59:59')) LIMIT 0,50 date(datetime)
我不想根据每一天分开帖子,而是根据我指定的相同范围。
【问题讨论】:
-
这能回答你的问题吗? MySQL Query to group by date range?
-
你能分享一下你正在尝试什么吗?
-
regular table for posts是什么 -
@Strawberry 我的意思是一个带有文本字段和 id 以及
datetime字段的典型表格