Mysql 用周()显示周开始日期
我正在使用week函数,如下所示: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
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