MySQL选择周数和年会导致一年中最后一周出现问题

MySQL选择周数和年会导致一年中最后一周出现问题,mysql,sql-date-functions,Mysql,Sql Date Functions,我有一个跨越数年的大型数据集,在获取诸如“53-2016”(2016年第53周)之类的字符串时遇到问题 我的问题是: SELECT date, DATE_FORMAT(date, "%v-%Y") AS week, FROM myTable GROUP BY week ORDER BY date; 使用这个查询,我得到两行,其中我只希望有一行 发生这种情况的原因是每周分组。2015年底,日期:12月28日至31日添加到第53-2015周,该周剩余时间(1月1日至3日)添加

我有一个跨越数年的大型数据集,在获取诸如“53-2016”(2016年第53周)之类的字符串时遇到问题

我的问题是:

SELECT 
  date,
  DATE_FORMAT(date, "%v-%Y") AS week,      
FROM myTable
GROUP BY week
ORDER BY date;
使用这个查询,我得到两行,其中我只希望有一行

发生这种情况的原因是
每周分组
。2015年底,日期:12月28日至31日添加到第53-2015周,该周剩余时间(1月1日至3日)添加到名为53-2016的行中

有什么方法可以将1月的前三天添加到53-2015组中吗?

是的,您可以这样做。 执行以下操作

SELECT 
  date,
  DATE_FORMAT(DATE_SUB(date, INTERVAL MOD(DAYOFWEEK(`date`) +5,7) DAY ), "%v-%Y") AS week
FROM myTable
GROUP BY week
ORDER BY date;

这将查询一周中的哪一天,并减去这几天,因此每天基本上被截短到前一个星期一

像这样的事情(做更多的测试…)怎么样

输出:

    date    week
1   31.12.2015 00:00:00 53-2015
2   01.01.2016 00:00:00 53-2015

最后我自己弄明白了

事实证明,MySQL还有第二种方法可以以
DATE\u格式()打印年份

%x-星期一为一周的第一天的一周的年份,四位数,与%v一起使用

这解决了问题,我的查询结果如下:

SELECT 
  date,
  DATE_FORMAT(date, "%v-%x") AS week,      
FROM myTable
GROUP BY week
ORDER BY date;

谢谢你的回答。您的查询在2016年到2017年这一周有问题,但我设法解决了我的问题,并发布了答案。
SELECT 
  date,
  DATE_FORMAT(date, "%v-%x") AS week,      
FROM myTable
GROUP BY week
ORDER BY date;