MySQL WEEK函数
时间:2019-11-20 08:52:23 来源:igfitidea点击:
简介:在本教程中,您将学习如何使用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函数:
Mode | First day of week | Range | Week 1 is the first week … |
---|---|---|---|
0 | Sunday | 0-53 | with a Sunday in this year |
1 | Monday | 0-53 | with 4 or more days this year |
2 | Sunday | 1-53 | with a Sunday in this year |
3 | Monday | 1-53 | with 4 or more days this year |
4 | Sunday | 0-53 | with 4 or more days this year |
5 | Monday | 0-53 | with a Monday in this year |
6 | Sunday | 1-53 | with 4 or more days this year |
7 | Monday | 1-53 | with a Monday in this year |
上表中的"今年有4天或以上"表示:
如果包含1月1日并且在新的一年中有4天或更多天的一周,则该周被编号为第1周。
否则,该周被编号为上一年的最后一周,而下一周被编号为第1周。
WEEK函数根据ISO 8601:1988返回星期数
MySQL WEEK函数示例
请参见示例数据库中的以下订单表。
以下语句使用WEEK函数返回2013年每周的订单数:
SELECT WEEK(orderDate) week_no, COUNT(*) FROM orders WHERE YEAR(orderDate) = 2003 GROUP BY WEEK(orderDate);
在本教程中,您学习了如何使用MySQL WEEK函数从指定日期获取星期数。