Run Weekly Jobs on Wednesday at 9 AM | CronBase

cron expression Standard
$ 0 9 * * 3

Every Wednesday morning at nine o'clock

The `0 9 * * 3` cron expression schedules a job to execute every Wednesday at exactly 9:00 AM. This mid-week, mid-morning cadence is highly effective for running non-disruptive weekly maintenance, generating business intelligence reports, sync operations, and kicking off mid-week marketing campaigns during active business hours.

Minute
0
Hour
9
Day of Month
*
Month
*
Day of Week
3

Next 5 Runs

  • in 4d 23h
  • in 11d 23h
  • in 18d 23h
  • in 25d 23h
  • in 32d 23h

* Tools

Code & Implementations

nodejs
const cron = require('node-cron');
const logger = require('./logger'); // Assume a production logger like Winston

// Schedule task to run every Wednesday at 9:00 AM
const task = cron.schedule('0 9 * * 3', async () => {
    logger.info('Starting weekly Wednesday report generation pipeline...');
    try {
        await runWeeklyReportPipeline();
        logger.info('Weekly Wednesday report generation completed successfully.');
    } catch (error) {
        logger.error('Failed to execute weekly Wednesday report pipeline', { error: error.message, stack: error.stack });
        // Handle alerting logic here
    }
}, {
    scheduled: true,
    timezone: "America/New_York" // Explicitly lock timezone to avoid DST drift issues
});

task.start();
Setup notes

Install the node-cron package. It is recommended to define an explicit timezone in the configuration options to prevent unexpected execution times during daylight saving changes.

Partner BetterStack

Monitor this schedule in production

Get alerted the moment this cron job fails, is late, or doesn't run. BetterStack tracks execution, duration, and output — no infrastructure required.

Platform Equivalents

AWS EventBridge

Standard cron expressions often need conversion for AWS EventBridge schedules.

EventBridge Rule
cron(0 9 ? * 3 *)

Systemd Timer

OnCalendarWed *-*-* 09:00:00

my-task.timer
[Unit]
Description=Timer for cron expression: 0 9 * * 3

[Timer]
OnCalendar=Wed *-*-* 09:00:00
Persistent=true

[Install]
WantedBy=timers.target

Frequently Asked Questions

How does daylight saving time affect this Wednesday 9 AM schedule?

If your system timezone is set to a local zone that observes DST, the job will shift relative to UTC but remain at 9:00 AM local time. To maintain a strict UTC interval, run your cron daemon in UTC, which means the local execution time will shift by one hour twice a year.

What happens if the server is offline at Wednesday 9:00 AM?

Standard cron does not catch up on missed executions. If your server is offline during the trigger window, the job will not run until the following Wednesday. For critical tasks, use an orchestrator with a misfire instruction or 'anacron' for local environments.

How can I prevent this weekly job from overlapping with itself if it runs long?

Since this job runs once a week, an overlap is highly unlikely unless the job hangs. Implement file-based locking using 'flock' in Bash, use a distributed lock manager like Redis for microservices, or set 'concurrencyPolicy: Forbid' in Kubernetes.

Can I run this job on multiple specific days instead of just Wednesday?

Yes, you can modify the fifth field. For example, changing the expression to `0 9 * * 1,3,5` will run the job at 9:00 AM on Mondays, Wednesdays, and Fridays instead of only on Wednesdays.

How do I monitor and alert on failures for this weekly cron job?

Because weekly jobs run infrequently, silent failures are dangerous. Integrate a push-monitoring tool (like Healthchecks.io or Opsgenie) that expects a ping every Wednesday morning, and configure it to alert your team if the ping is missed.

* Explore

Related expressions you might need

Was this helpful?

Last verified: