【问题标题】:mysql week from Monday till Sunday从周一到周日的mysql周
【发布时间】:2011-10-27 10:03:45
【问题描述】:

我想按 yearweek 对我的数据进行分组,但星期从星期日开始。 如何从周一到周日对我的一周进行分组?

这是我的查询:

SELECT YEARWEEK(dateStats) k,dateStats udate, COUNT(f_shop) sales
FROM sal_import WHERE dateStats BETWEEN "2011-08-15" AND "2011-08-21" GROUP BY YEARWEEK(dateStats)

Between 的日期是从周一到周日,我只需要一行。

非常感谢

【问题讨论】:

标签: mysql


【解决方案1】:

YEARWEEK(date[,mode]) 函数的第二个参数是 mode - 就像在 WEEK(date[,mode]) 函数中一样。

您可以指定开始日期 - 默认为 0 (Sunday)

只需将其设置为1 (Monday):

YEARWEEK(dateStats, 1)

【讨论】:

  • 这个方法真是太棒了,这种问题有时会困扰我
【解决方案2】:

您可以为此设置一个全局变量:

More Info

如果你很懒,那就是

  --default_week_format=1

【讨论】:

  • 很遗憾没有。这是不可能的,因为this bug
【解决方案3】:

我建议对此类工作使用日期维度。这允许您为日期指定不同的属性,例如“工作日”、“周末”、“周数”、“财务季度”等。

有关更多信息,请参阅我对以下问题的回答;

Select all months within given date span, including the ones with 0 values

然后,您可以使用两个不同的 YEARWEEK 类型值创建列,将您的数据连接到维度表,并为其中任何一个生成结果,而无需更改设置等。

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多