next_day

Description

Returns the date of the first specified day of week (DOW) that occurs after the input date (DATE or DATETIME). For example, next_day('2023-04-06', 'Monday') returns the date of the next Monday that occurred after '2023-04-06'.

This function is the opposite of previous_day.

Syntax

DATE next_day(DATETIME|DATE date_expr, VARCHAR dow)

Parameters

  • date_expr: the input date. It must be a valid DATE or DATETIME expression.

  • dow: the day of week. Valid values include a number of abbreviations which are case-sensitive:

    DOW_FULLDOW_2DOW_3
    SundaySuSun
    MondayMoMon
    TuesdayTuTue
    WednesdayWeWed
    ThursdayThThu
    FridayFrFri
    SaturdaySaSat

Return value

Returns a DATE value.

Any invalid dow will cause an error. dow is case-sensitive.

Returns NULL if an invalid date or a NULL argument is passed in.

Examples

-- Return the date of the next Monday that occurred after 2023-04-06. 2023-04-06 is Thursday and the date of the next Monday is 2023-04-10.

MySQL > select next_day('2023-04-06', 'Monday');
+----------------------------------+
| next_day('2023-04-06', 'Monday') |
+----------------------------------+
| 2023-04-10                       |
+----------------------------------+

MySQL > select next_day('2023-04-06', 'Tue');
+-------------------------------+
| next_day('2023-04-06', 'Tue') |
+-------------------------------+
| 2023-04-11                    |
+-------------------------------+

MySQL > select next_day('2023-04-06 20:13:14', 'Fr');
+---------------------------------------+
| next_day('2023-04-06 20:13:14', 'Fr') |
+---------------------------------------+
| 2023-04-07                            |
+---------------------------------------+

keyword

NEXT_DAY, NEXT