如何使用任意工作日作为一周的开始从 MySQL 中的日期中提取一周?

Posted

技术标签:

【中文标题】如何使用任意工作日作为一周的开始从 MySQL 中的日期中提取一周?【英文标题】:How to extract the week from a date in MySQL using arbitrary weekday as the start of the week? 【发布时间】:2014-12-27 11:06:54 【问题描述】:

我有一个数据集(例如,“x”,日期为“xdate”),我希望获得每周平均数。我可以像这样使用 SQL(对于 mysql)来做到这一点:

SELECT 
    YEAR(xdate), 
    WEEKOFYEAR(xdate), avg(x) 
FROM 
    xtable
GROUP BY 
    YEAR(xdate),
    WEEKOFYEAR(xdate);

但是,我还想使用任意工作日作为“一周的开始”来对周进行分组。查看documentation 似乎可以使用参数进行 WEEK 调用,以将一周的开始时间表示为星期日或星期一。我想在一周中的任何一天打电话给一周的开始。所以平均值可能是从周三到周三,依此类推。有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

如果加一天,功能逻辑可以移动一天。

例如:

SELECT
  YEAR(xdate),
  WEEKOFYEAR(date_add(xdate, interval 1 day) ),
  avg(x)
FROM
  xtable
GROUP BY
  YEAR(xdate),
  WEEKOFYEAR(date_add(xdate, interval 1 day));

通过这种方式,您可以根据需要将一周的开始时间更改为任意天数。

【讨论】:

以上是关于如何使用任意工作日作为一周的开始从 MySQL 中的日期中提取一周?的主要内容,如果未能解决你的问题,请参考以下文章

从 Aginity 工作台中的周数和年份获取一周的最后一天

如何在mysql中获取日期的一周的第一天?

如何使 GWT DatePicker 使用星期一作为一周的第一天?

使用存储过程将星期一计算为一周的第一天

如何在Oracle中生成一周的第一天,一周的最后一天和两个日期之间的周数

mysql给定一年中的第几周,输出这一周的日期