YEARWEEK() Function in MySQL

YEARWEEK() Function in MySQL

MySQL, a powerful and widely used open-source relational database management system, offers a plethora of functions to manipulate and manage data. One such function is the YEARWEEK() function. This function is a handy tool for extracting the year and week numbers from a given date, providing valuable insights for data analysis and manipulation. This article delves into the intricacies of the YEARWEEK() function, its syntax, parameters, return values, and practical applications.

Understanding the YEARWEEK() Function

The YEARWEEK() function in MySQL is a date function that returns a number representing the year and week of a given date. This function is particularly useful when you need to group or categorize data based on the week of the year.

While similar to the WEEK() function, the YEARWEEK() function differs in that it includes the year in its return value. This distinction makes YEARWEEK() more suitable for scenarios where data spans multiple years, and week numbers alone would not provide sufficient context.

Syntax of the YEARWEEK() Function

The syntax of the YEARWEEK() function is straightforward. It can be used in two forms:

  1. YEARWEEK(date)
  2. YEARWEEK(date, mode)

In the first form, the function takes a single parameter, date, which is the date from which the year and week number are to be extracted. The date parameter is required and must be a valid date or datetime expression.

In the second form, an additional mode parameter is included. This optional parameter influences how the week number is calculated. If the mode parameter is not specified, the function uses the value of the default_week_format system variable.

Return Value of the YEARWEEK() Function

The YEARWEEK() function returns a number that represents the year and week of the given date. The first four digits represent the year, and the last two digits represent the week number. For example, for the date ‘2023-12-29’, the function would return ‘202352’, indicating the 52nd week of 2023.

If the specified expression is not a valid date or datetime, or if the argument is NULL, the function returns NULL.

Understanding the Mode Parameter

The mode parameter in the YEARWEEK() function plays a crucial role in determining the week number. It affects the calculation of weeks in several ways, including the first day of the week, the minimum number of days in the first week, and the week number range.

The mode parameter can take values from 0 to 7, each corresponding to a different set of rules for calculating the week number. Here is a brief overview:

Mode First Day of Week Week Number Range Minimum Days in First Week
0 Sunday 0 – 53 0
1 Monday 0 – 53 4
2 Sunday 1 – 53 0
3 Monday 1 – 53 4
4 Sunday 0 – 53 0
5 Monday 0 – 53 4
6 Sunday 1 – 53 0
7 Monday 1 – 53 4

Examples of the YEARWEEK() Function

Let’s explore some examples of the YEARWEEK() function to better understand its usage and output.

  1. SELECT YEARWEEK('2023-12-29');
    This query returns ‘202352’, indicating the 52nd week of 2023.
  2. SELECT YEARWEEK('2023-12-29', 1);
    With mode 1, this query returns ‘202352’, indicating the 52nd week of 2023, with Monday as the first day of the week.
  3. SELECT YEARWEEK('2023-12-29', 2);
    With mode 2, this query returns ‘202353’, indicating the 53rd week of 2023, with Sunday as the first day of the week.

Common Use Cases of the YEARWEEK() Function

The YEARWEEK() function is commonly used in scenarios where data needs to be grouped or analyzed based on the week of the year. For instance, it can be used to analyze weekly sales data, track project progress on a weekly basis, or generate weekly reports.


The YEARWEEK() function in MySQL is a powerful tool for extracting the year and week numbers from a given date. Its flexibility, as demonstrated by the optional mode parameter, allows for customization to suit various data analysis needs. By understanding and effectively using the YEARWEEK() function, you can enhance your data manipulation and analysis capabilities in MySQL.


r00t is a seasoned Linux system administrator with a wealth of experience in the field. Known for his contributions to, r00t has authored numerous tutorials and guides, helping users navigate the complexities of Linux systems. His expertise spans across various Linux distributions, including Ubuntu, CentOS, and Debian. r00t's work is characterized by his ability to simplify complex concepts, making Linux more accessible to users of all skill levels. His dedication to the Linux community and his commitment to sharing knowledge makes him a respected figure in the field.
Back to top button