我试着谷歌这个,但我能找到的是如何按字母顺序排序,我已经知道。基本上,我想对不同的行进行排序,并根据它们的日期值打印出来。
这是在打印比赛时间表。我想按周组织并打印出来所以第一周的所有比赛都打印在一起第二周的比赛等等。
我不想使用具有特定日期的WHERE()
条款,因为我有多个具有多个开始日期的联赛,并且日期肯定不会相同。我觉得搜索每一个可能的日期会很迟钝。
这在概念上很简单,只是语法有点混乱。
您需要一个表达式将任何DATE
转换为它包含的一周的第一天,然后您需要对该表达式进行ORDER BY
。
如果你的一周从星期日开始,下面是表达式
FROM_DAYS(TO_DAYS(event_date) -MOD(TO_DAYS(event_date) -1, 7))
所以一个大致像这样的查询会为你做的。
SELECT FROM_DAYS(TO_DAYS(event_date) -MOD(TO_DAYS(event_date) -1, 7)) AS week_begin,
*
FROM competition
ORDER BY FROM_DAYS(TO_DAYS(event_date) -MOD(TO_DAYS(event_date) -1, 7)),
team, whatever
这还没有调试好;我不知道你的列名或表名。
这在这里写得很详细。http://www.plumislandmedia.net/mysql/sql-reporting-time-intervals/