MySQL WEEK函数

简介:在本教程中,您将学习如何使用MySQL WEEK函数获取日期的星期数。

MySQL WEEK函数示例

请参见示例数据库中的以下订单表。

以下语句使用WEEK函数返回2013年每周的订单数:

SELECT 
    WEEK(orderDate) week_no, 
    COUNT(*)
FROM
    orders
WHERE
    YEAR(orderDate) = 2003
GROUP BY WEEK(orderDate);

在本教程中,您学习了如何使用MySQL WEEK函数从指定日期获取星期数。

MySQL WEEK函数简介

通常,一年中正常年份为365天,leap年为366天。
然后将一年分为几个星期,每个星期有7天。
因此,一年中,我们通常有365/7 = 52周,从1到52。

要检查特定日期是否属于哪个星期数,请按如下方式使用WEEK函数:

WEEK(date, mode);

WEEK函数接受两个参数:

  • date是您要获取星期数的日期。

  • mode是一个可选参数,它确定周数计算的逻辑。
    它允许您指定星期是从星期一还是星期日开始,返回的星期数应该在0到52之间或0到53之间。

如果忽略mode参数,则默认情况下,WEEK函数将使用default_week_format系统变量的值。

要获取default_week_format变量的当前值,请使用SHOW VARIABLES语句,如下所示:

mysql> SHOW VARIABLES LIKE 'default_week_format';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| default_week_format | 0     |
+---------------------+-------+
1 row in set (0.01 sec)

在我们的服务器中,default_week_format的默认值为0.下表说明了mode参数如何影响WEEK函数:

ModeFirst day of weekRangeWeek 1 is the first week …
0Sunday0-53with a Sunday in this year
1Monday0-53with 4 or more days this year
2Sunday1-53with a Sunday in this year
3Monday1-53with 4 or more days this year
4Sunday0-53with 4 or more days this year
5Monday0-53with a Monday in this year
6Sunday1-53with 4 or more days this year
7Monday1-53with a Monday in this year

上表中的"今年有4天或以上"表示:

  • 如果包含1月1日并且在新的一年中有4天或更多天的一周,则该周被编号为第1周。

  • 否则,该周被编号为上一年的最后一周,而下一周被编号为第1周。

WEEK函数根据ISO 8601:1988返回星期数

日期:2019-11-20 08:52:23 来源:oir作者:oir