Azure Functions uses NCRONTAB — a 6-field format starting with seconds. Despite looking like Quartz, it has different rules (no L, W, or ?).
| Expression | What it means | Typical use |
|---|---|---|
0 */5 * * * * |
Every 5 minutes | Polling APIs, queue processing. |
0 0 * * * * |
Every hour on the hour | Hourly aggregation jobs. |
0 0 0 * * * |
Every day at midnight | Daily report generation. |
0 0 9 * * 1-5 |
Weekdays at 9 AM | Business-hours batch. |
30 0 * * * * |
Every hour at xx:00:30 | Slight offset to avoid clash. |
0 0 0 1 * * |
First of every month at midnight | Monthly billing tasks. |
Click any expression to load it into the tool above.
Two differences: (1) NCRONTAB has 6 fields instead of 5 — the first field is seconds. (2) NCRONTAB does not support Quartz-style L, W, or ?.
By default, UTC. You can override via the WEBSITE_TIME_ZONE app setting. For Linux Premium / Consumption, use the standard tz database name (e.g., "Pacific Standard Time" or "America/Los_Angeles").
No — seconds is the minimum granularity. * * * * * * means every second.
Set functions.${functionName}.disabled = true in your host.json, or set the env var AzureWebJobs.${functionName}.Disabled=1. The trigger will not fire until re-enabled.
Timer triggers can briefly run twice if both slots have the function enabled. Best practice: scope timer functions to a singleton slot, or use distributed locks (Cosmos DB, blob lease) for idempotency.