Cron Expression for Every Weekday

0 9 * * 1-5

0 9 * * 1-5 runs at 09:00 Monday through Friday. In the weekday field 0 is Sunday and 1–5 are Monday to Friday; most crons also accept the names MON-FRI.

Next runs, in your timezone

 

Reading the weekday field

The fifth field counts days of the week with 0 (and usually 7) as Sunday. 1-5 is therefore Monday–Friday. Names work in Vixie cron and most compatibles and read better in a shared crontab.

0 9 * * 1-5      /path/to/job.sh
0 9 * * MON-FRI  /path/to/job.sh  # identical

Day-of-month and day-of-week together

Cron's most surprising rule: when both the day-of-month and weekday fields are restricted, the job runs when either matches, not both. 0 9 1 * 1 fires on the 1st of the month and every Monday. Keep one of the two fields as * unless you really want the union.

Weekdays in whose calendar?

The weekday flips at midnight in the cron daemon's timezone. A UTC server's "Monday 09:00" is Monday morning in Europe but Sunday night in parts of the US — same CRON_TZ advice as any time-of-day schedule.

Equivalent expressions

  • 0 9 * * MON-FRIidentical schedule using day names

Run a SQL query on this schedule

If the job behind this schedule is a database query, you can skip the server and the crontab: SaturnSQL runs saved SQL queries on a cron expression — this exact syntax, with a real timezone field — and delivers the results to Google Sheets or Slack. Minimum interval 5 minutes.