previous_day

Description

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

This function is the opposite of next_day.

Syntax

DATE previous_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.

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

Examples

-- Return the date of the previous Monday that occurred before 2023-04-06. 2023-04-06 is Thursday and the date of the previous Monday is 2023-04-03.

MySQL > select previous_day('2023-04-06', 'Monday');
+--------------------------------------+
| previous_day('2023-04-06', 'Monday') |
+--------------------------------------+
| 2023-04-03                           |
+--------------------------------------+

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

MySQL > select previous_day('2023-04-06 20:13:14', 'Fr');
+-------------------------------------------+
| previous_day('2023-04-06 20:13:14', 'Fr') |
+-------------------------------------------+
| 2023-03-31                                |
+-------------------------------------------+

keyword

PREVIOUS_DAY, PREVIOUS, previousday