week

Description

Returns the week number for a given date. This function works in the same way as the WEEK function in MySQL.

Syntax

INT WEEK(DATETIME|DATE date, INT mode)

Parameters

  • Date: The supported data types are DATETIME and DATE.

  • Mode: optional. The supported data type is INT. This parameter is used to specify the logic for calculating the week number, that is, whether the week starts on Sunday or Monday, and whether the return value is in the range of 0~53 or 1~53. Value range: 0~7. Default value: 0. If this parameter is not specified, mode 0 is used by default. The following table describes how this parameter works.

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

Return value

Returns a value of the INT type. Value range: 0~53. The specific range is determined based on the mode parameter. NULL is returned if the value of date is invalid or the input value is empty.

Examples

Calculate the week number for 2007-01-01. 2007-01-01 is Monday on the calendar.

  • Mode is set to 0 and 0 is returned. The week starts on Sunday. 2007-01-01 is Monday and cannot be week 1. Therefore, 0 is returned.
mysql> SELECT WEEK('2007-01-01', 0);
+-----------------------+
| week('2007-01-01', 0) |
+-----------------------+
|                     0 |
+-----------------------+
1 row in set (0.02 sec)
  • Mode is set to 1 and 1 is returned. The week starts on Monday and 2007-01-01 is Monday.
mysql> SELECT WEEK('2007-01-01', 1);
+-----------------------+
| week('2007-01-01', 1) |
+-----------------------+
|                     1 |
+-----------------------+
1 row in set (0.02 sec)
  • Mode is set to 2 and 53 is returned. The week starts on Sunday. However, 2007-01-01 is Monday and the value range is 1~53. Therefore, 53 is returned, indicating that this is the last week of the previous year.
mysql> SELECT WEEK('2007-01-01', 2);
+-----------------------+
| week('2007-01-01', 2) |
+-----------------------+
|                    53 |
+-----------------------+
1 row in set (0.01 sec)