Curated cron expression
Daily at 2 AM Cron Expression: 0 2 * * *
Decode 0 2 * * * for a daily 2 AM job, including next runs, backup use cases, timezone and DST hazards, field meaning, and conversions across scheduler platforms.
Meaning at a glance
0 2 * * *
Run every day at 02:00
Once per calendar day at 02:00 in the scheduler timezone.
Next-run example: At Tuesday 02:10, the next nominal runs are Wednesday 02:00, Thursday 02:00, and Friday 02:00.
How 0 2 * * * works
The expression selects minute 0 of hour 2 on every date. It is frequently used for backups because 02:00 is assumed to be off-peak, but that assumption should be checked against actual global traffic.
02:00 is also a dangerous local time in some DST regions: it may not exist during spring-forward or can sit near a repeated clock period. UTC avoids that ambiguity.
| Field | Value | Meaning |
|---|---|---|
| Minute | 0 | At minute zero |
| Hour | 2 | At 02:00 |
| Day of month | * | Every date |
| Month | * | Every month |
| Day of week | * | Every weekday |
Good use cases
- Database backup
- Search reindexing
- Data retention cleanup
- Nightly reconciliation
Timezone and daylight-saving behavior
Document whether 02:00 means server time, UTC, or a business timezone; those can be different dates and traffic windows.
In some IANA zones the local 02:00 hour is skipped or repeated. Platform behavior differs, so preview the transition and make the task repeat-safe.
The expression does not contain a timezone. The scheduler supplies that context. Use the next-run preview above in the same IANA timezone as production, then confirm the target platform's own timezone rules.
Platform compatibility and converted expressions
The source expression is five-field Unix cron. Use the exact equivalent below rather than adding or removing fields by sight.
| Platform | Status | Expression | What to know |
|---|---|---|---|
| Unix crontab | Ready | 0 2 * * * | Use directly in a normal five-field user crontab. |
| Kubernetes CronJob | Ready | 0 2 * * * | Use as spec.schedule; set spec.timeZone when local wall-clock behavior matters. |
| GitHub Actions | Ready | 0 2 * * * | Use under on.schedule; UTC is the default and an IANA timezone may be specified. |
| Vercel Cron Jobs | Ready | 0 2 * * * | Valid daily schedule on all plans; Vercel interprets it as 02:00 UTC. |
| AWS EventBridge Scheduler | Convert | cron(0 2 * * ? *) | Convert to AWS minute-first cron(...), add the required year, and use ? in one day field. |
| Spring @Scheduled | Convert | 0 0 2 * * * | Use Spring’s six fields by prepending seconds and set zone explicitly when needed. |
| systemd timer | Convert | *-*-* 02:00:00 | Use OnCalendar syntax and validate it with systemd-analyze calendar on the target host. |
Edge cases to check before deployment
- A backup must have enough time to finish before downstream jobs start.
- A “nightly” job can run during peak hours for users in another region.
- Missed runs while a host is powered off are not recovered by basic cron.
Frequently asked questions
What does the cron expression 0 2 * * * mean?
0 2 * * * means “run every day at 02:00.” Once per calendar day at 02:00 in the scheduler timezone.
What are the next run times for 0 2 * * *?
At Tuesday 02:10, the next nominal runs are Wednesday 02:00, Thursday 02:00, and Friday 02:00. Exact timestamps depend on the scheduler timezone and the current time.
What timezone does 0 2 * * * use?
Document whether 02:00 means server time, UTC, or a business timezone; those can be different dates and traffic windows.
Can I use 0 2 * * * on every scheduling platform?
No. It is a five-field Unix expression. Some platforms accept it directly, while AWS EventBridge Scheduler, Spring, and systemd require the converted form shown in the compatibility table.