Mysql 用周()显示周开始日期

Mysql 用周()显示周开始日期,mysql,sql,week-number,Mysql,Sql,Week Number,我正在使用week函数,如下所示: SELECT sub.id AS ARID, WEEK(my.data) AS Week, 是否可以添加该周对应的周开始日期 比如: SELECT sub.id AS ARID, WEEK(my.data) AS Week, MIN(my.data) AS WKBeginning 以这种方式使用MIN,我无意中删除了很多数据——它甚至应该与数据分离。换句话说,我想将周显示为一个日期,而不是一个类似“星期一-201

我正在使用week函数,如下所示:

SELECT 
    sub.id AS ARID,
    WEEK(my.data) AS Week,
是否可以添加该周对应的周开始日期

比如:

SELECT 
    sub.id AS ARID,
    WEEK(my.data) AS Week,
    MIN(my.data) AS WKBeginning
以这种方式使用MIN,我无意中删除了很多数据——它甚至应该与数据分离。换句话说,我想将周显示为一个日期,而不是一个类似“星期一-2014-09-04”的数字


有可能吗?

如果源表没有包含一周的全部日期(特别是一周的第一天),那么我的第一个答案就不正确了

正确的方法是使用:

当一周的第一天未包含在数据中时,相关子查询应不起作用

SELECT 
  id,
  WEEK(d) AS Week,
  ADDDATE(d, INTERVAL 1-DAYOFWEEK(d) DAY) AS CorrectWKBeginning,
  (SELECT MIN(d) FROM t WHERE WEEK(d) = WEEK(t2.d)) as IncorrectWKBeginning
FROM t t2


您可能需要使用带有参数的week()来设置一周的开始日期,如果它从0-53或1-53开始计算,请参阅。

在某些情况下,我的答案不正确,我已使用更好(正确)的解决方案对其进行了更新。非常感谢,第二个答案更容易理解
SELECT 
  id,
  WEEK(d) AS Week,
  ADDDATE(d, INTERVAL 1-DAYOFWEEK(d) DAY) AS CorrectWKBeginning,
  (SELECT MIN(d) FROM t WHERE WEEK(d) = WEEK(t2.d)) as IncorrectWKBeginning
FROM t t2