-- Basic trigger-time tests for cron_utils CREATE EXTENSION cron_utils; SET timezone = 'UTC'; -- next daily midnight trigger on/after 2024-01-01 12:00 SELECT cron_first_trigger('0 0 * * *', '2024-01-01 12:00+00'); cron_first_trigger ------------------------------ Tue Jan 02 00:00:00 2024 UTC (1 row) SELECT cron_first_trigger('0 0 * * *', '2024-01-01 00:00+00', strict => true); cron_first_trigger ------------------------------ Tue Jan 02 00:00:00 2024 UTC (1 row) -- last weekday 9am trigger on/before 2024-01-08 00:00 (Sunday -> Friday) SELECT cron_last_trigger('0 9 * * 1-5', '2024-01-08 00:00+00', strict => true); cron_last_trigger ------------------------------ Fri Jan 05 09:00:00 2024 UTC (1 row) -- first/last triggers within a window SELECT * FROM cron_first_last_triggers( '0 0 * * *', '2024-01-01 00:00+00', '2024-01-31 23:59+00' ); first | last ------------------------------+------------------------------ Mon Jan 01 00:00:00 2024 UTC | Wed Jan 31 00:00:00 2024 UTC (1 row) -- step expression: every 15 minutes SELECT cron_first_trigger('*/15 * * * *', '2024-01-01 00:07+00', strict => true); cron_first_trigger ------------------------------ Mon Jan 01 00:15:00 2024 UTC (1 row) -- multiple triggers SELECT cron_iterate_n('0 * * * *', '2024-01-01 00:00+00', false, 'next', 3); cron_iterate_n ------------------------------ Mon Jan 01 00:00:00 2024 UTC Mon Jan 01 01:00:00 2024 UTC Mon Jan 01 02:00:00 2024 UTC (3 rows)