我正在使用周函数:
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”中的数字
这可能吗?
答案 0 :(得分:1)
如果源表没有包含本周的完整日期范围(特别是一周的第一天),我的第一个答案结果是不正确的。
正确的方法是使用ADDDATE():
ADDDATE(my.data, INTERVAL 1-DAYOFWEEK(my.data) DAY) AS CorrectWKBeginning,
当数据中未包含数据的第一天时,相关的子查询 不 :
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开始计算,请参阅MySQL manual for reference。