Cron Expression for Every Weekday
0 9 * * 1-50 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 # identicalDay-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-FRI— identical 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.