ā§§ā§Ģ āύāϭ⧇, ⧍ā§Ļ⧍ā§Ģ¡6 āĻŽāĻŋāύāĻŋāϟ āĻĒāĻĄāĻŧāϤ⧇

PostgreSQL-āĻ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤ āϏāĻŽā§ŸāϏ⧂āϚāĻŋ āĻ“ āϟāĻžāχāĻŽāĻœā§‹āύ: āύāĻŽā§āύāĻž

PostgreSQL-āĻ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤ āĻļāĻŋāĻĄāĻŋāωāϞ āĻāĻŦāĻ‚ āϟāĻžāχāĻŽāĻœā§‹āύāϗ⧁āϞ⧋ āϕ⧀āĻ­āĻžāĻŦ⧇ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ“ āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰāĻŦ⧇āĻ¨â€”āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻĢāϰāĻŽā§āϝāĻžāϟ, āϰāĻŋāĻ•āĻžāϰ⧇āĻ¨ā§āϏ āύāĻŋ⧟āĻŽ, āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻāĻŦāĻ‚ āĻ•ā§ā§Ÿā§‡āϰāĻŋ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ⧇āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āϝāĻž āĻ•ā§āϝāĻžāϞ⧇āĻ¨ā§āĻĄāĻžāϰāϕ⧇ āϏāĻ āĻŋāĻ• āϰāĻžāϖ⧇āĨ¤

PostgreSQL-āĻ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤ āϏāĻŽā§ŸāϏ⧂āϚāĻŋ āĻ“ āϟāĻžāχāĻŽāĻœā§‹āύ: āύāĻŽā§āύāĻž

āϕ⧇āύ āϟāĻžāχāĻŽāĻœā§‹āύ āĻ“ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤ āχāϭ⧇āĻ¨ā§āϟ āĻ­ā§āϰāĻžāĻ¨ā§āϤ āĻšā§Ÿ\n\nāĻ…āϧāĻŋāĻ•āĻžāĻ‚āĻļ āĻ•ā§āϝāĻžāϞ⧇āĻ¨ā§āĻĄāĻžāϰ āĻŦāĻžāĻ— āĻ—āĻŖāĻŋāϤāĻ—āϤ āύāĻž; āĻāϗ⧁āϞ⧋ āĻŽāĻžāύ⧇-āϏāĻ‚āĻ•ā§āϰāĻžāĻ¨ā§āϤ āĻŦāĻžāĻ—āĨ¤ āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ āϜāĻŋāύāĻŋāϏ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇āύ (āĻāĻ•āϟāĻŋ āĻŽā§āĻšā§‚āĻ°ā§āϤ āϏāĻŽā§Ÿ), āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰāĻž āĻ…āĻ¨ā§āϝ āĻ•āĻŋāϛ⧁ āφāĻļāĻž āĻ•āϰ⧇ (āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ¸ā§āĻĨāĻžāύ⧇āϰ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĨāĻžāĻ¨ā§€ā§Ÿ āĻ•ā§āϞāĻ• āϟāĻžāχāĻŽ)āĨ¤ āĻāχ āĻŦā§āϝāĻŦāϧāĻžāύāχ āĻ•āĻžāϰāĻŖ āϝ⧇ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤ āĻļāĻŋāĻĄāĻŋāωāϞ āĻāĻŦāĻ‚ āϟāĻžāχāĻŽāĻœā§‹āύ āĻĒāϰ⧀āĻ•ā§āώāĻžā§Ÿ āĻ āĻŋāĻ• āĻĻāĻžāρ⧜āĻžā§Ÿ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āφāϏāϞ⧇ āϭ⧇āϙ⧇ āĻĻā§‡ā§ŸāĨ¤\n\nāĻĄā§‡ āϞāĻžāχāϟ āϏ⧇āĻ­āĻŋāĻ‚ āϟāĻžāχāĻŽ (DST) āĻšāϞ āĻ•ā§āϞāĻžāϏāĻŋāĻ• āĻŸā§āϰāĻŋāĻ—āĻžāϰāĨ¤ "āĻĒā§āϰāϤāĻŋāϟāĻŋ āϰāĻŦāĻŋāĻŦāĻžāϰ 09:00" āĻŦāϞāϤ⧇ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāϟāĻŋ āĻŦā§‹āĻāĻžāύ āύāĻž āϝ⧇ āĻāϟāĻž āĻ¸ā§āĻĨāĻžāĻ¨ā§€ā§Ÿ āĻ•ā§āϞāĻ• āϟāĻžāχāĻŽā§‡ āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ 09:00, āĻāĻŦāĻ‚ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āĻāϟāĻžāϕ⧇ "āĻĒā§āϰāĻžāϰāĻŽā§āĻ­āĻŋāĻ• āϟāĻžāχāĻŽāĻ¸ā§āĻŸā§āϝāĻžāĻŽā§āĻĒ āĻĨ⧇āϕ⧇ āĻĒā§āϰāϤāĻŋ 7 āĻĻāĻŋāύ" āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ—āĻŖāύāĻž āĻ•āϰ⧇āύ, āϤāĻ–āύ āĻ…āĻĢāϏ⧇āϟ āĻŦāĻĻāϞ⧇ āϗ⧇āϞ⧇ āĻĻ⧁āχāϟāĻŋ āϧāĻžāϰāĻŖāĻž āĻāĻ• āϘāĻŖā§āϟāĻž āĻ•āϰ⧇ āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āύ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āĻ•ā§āϝāĻžāϞ⧇āĻ¨ā§āĻĄāĻžāϰ āĻĸ⧇āρāϕ⧁āϰāĻŋā§Ÿā§‡ āϝāĻžāĻŦ⧇āĨ¤\n\nāĻ­ā§āϰāĻŽāĻŖ āĻ“ āĻŽāĻŋāĻļā§āϰ āϟāĻžāχāĻŽāĻœā§‹āύ āφāϰāĻ“ āĻāĻ• āĻ¸ā§āϤāϰ āϝ⧋āĻ— āĻ•āϰ⧇āĨ¤ āĻāĻ•āϟāĻŋ āĻŦ⧁āĻ•āĻŋāĻ‚ āĻšā§ŸāϤ⧋ āϕ⧋āύ⧋ āĻ¸ā§āĻĨāĻžāύ⧇āϰ āϏāĻ™ā§āϗ⧇ (āωāĻĻāĻžāĻšāϰāĻŖ: āĻļāĻŋāĻ•āĻžāĻ—ā§‹āϰ āĻāĻ•āϟāĻŋ āϏ⧇āϞ⧁āύ āĻšā§‡āϝāĻŧāĻžāϰ) āφāĻŦāĻĻā§āϧ, āϝāĻ–āύ āĻĻ⧇āĻ–āϛ⧇āύ āϏ⧇āχ āĻŦā§āϝāĻ•ā§āϤāĻŋ āϞāĻ¨ā§āĻĄāύ⧇ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āĻ¸ā§āĻĨāĻžāύ-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻļāĻŋāĻĄāĻŋāωāϞāϕ⧇ āĻŦā§āϝāĻ•ā§āϤāĻŋ-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧇āύ, āϤāĻžāĻšāϞ⧇ āĻ…āĻ¨ā§āϤāϤ āĻāĻ•āĻĒāĻ•ā§āώāϕ⧇ āϭ⧁āϞ āĻ¸ā§āĻĨāĻžāĻ¨ā§€ā§Ÿ āϏāĻŽā§Ÿ āĻĻ⧇āĻ–āĻžāĻŦ⧇āύāĨ¤\n\nāϏāĻžāϧāĻžāϰāĻŖ āĻŦā§āϝāĻ°ā§āĻĨāϤāĻžāϰ āϧāϰāύāϏāĻŽā§‚āĻš:\n\n- āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āϟāĻžāχāĻŽāĻ¸ā§āĻŸā§āϝāĻžāĻŽā§āĻĒ⧇ āχāύāϟāĻžāϰāĻ­āĻžāϞ āϝ⧋āĻ— āĻ•āϰ⧇ recurrences āϤ⧈āϰāĻŋ āĻ•āϰ⧇āύ, āϤāĻžāϰāĻĒāϰ DST āĻŦāĻĻāϞāĻžā§ŸāĨ¤\n- āφāĻĒāύāĻŋ āĻœā§‹āύ āϰ⧁āϞ āĻ›āĻžāĻĄāĻŧāĻž "āϞ⧋āĻ•āĻžāϞ āϟāĻžāχāĻŽ" āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇āύ, āϤāĻžāχ āĻĒāϰāĻŦāĻ°ā§āϤ⧀āϤ⧇ āωāĻĻā§āĻĻ⧇āĻļā§āϝāĻ•ā§ƒāϤ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϟāϗ⧁āϞ⧋ āĻĒ⧁āύāĻ°ā§āύāĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āύāĻžāĨ¤\n- āφāĻĒāύāĻŋ āϕ⧇āĻŦāϞ āĻāĻŽāύ āϤāĻžāϰāĻŋāĻ–āϗ⧁āϞ⧋ āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰ⧇āύ āϝāĻž āĻ•āĻ–āύāĻ“ DST āϏ⧀āĻŽāĻž āĻ…āϤāĻŋāĻ•ā§āϰāĻŽ āĻ•āϰ⧇ āύāĻžāĨ¤\n- āφāĻĒāύāĻŋ āĻāĻ•āĻ• āĻ•ā§ā§Ÿā§‡āϰāĻŋāϤ⧇ "āχāϭ⧇āĻ¨ā§āϟ āϟāĻžāχāĻŽāĻœā§‹āύ", "āχāωāϜāĻžāϰ āϟāĻžāχāĻŽāĻœā§‹āύ" āĻāĻŦāĻ‚ "āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϟāĻžāχāĻŽāĻœā§‹āύ" āĻŽāĻŋāϞāĻŋā§Ÿā§‡ āĻĢ⧇āϞ⧇āύāĨ¤\n\nāĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻŦ⧇āϛ⧇ āύ⧇āĻ“ā§ŸāĻžāϰ āφāϗ⧇ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰ⧁āύ āφāĻĒāύāĻžāϰ āĻĒā§āϰ⧋āĻĄāĻžāĻ•ā§āĻŸā§‡ "āϏāĻ āĻŋāĻ•" āĻŽāĻžāύ⧇ āϕ⧀āĨ¤\n\nāĻāĻ•āϟāĻŋ āĻŦ⧁āĻ•āĻŋāĻ‚ā§Ÿā§‡āϰ āϜāĻ¨ā§āϝ, "āϏāĻ āĻŋāĻ•" āϏāĻžāϧāĻžāϰāĻŖāϤ āĻŽāĻžāύ⧇: āĻ…ā§āϝāĻžāĻĒā§Ÿā§‡āĻ¨ā§āϟāĻŽā§‡āĻ¨ā§āϟāϟāĻŋ āϭ⧇āĻ¨ā§āϝ⧁āϰ āϟāĻžāχāĻŽāĻœā§‹āύ⧇ āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻŋāϤ āĻ“ā§ŸāĻžāϞ-āĻ•ā§āϞāĻ• āϟāĻžāχāĻŽ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āĻšāĻšā§āϛ⧇, āĻāĻŦāĻ‚ āϝ⧇āϕ⧇āω āϏ⧇āϟāĻŋ āĻĻ⧇āϖ⧁āĻ• āϏāĻ āĻŋāĻ• āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻĒāĻžā§ŸāĨ¤\n\nāĻāĻ•āϟāĻŋ āĻļāĻŋāĻĢāĻŸā§‡āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, "āϏāĻ āĻŋāĻ•" āĻĒā§āϰāĻžāϝāĻŧāχ āĻŽāĻžāύ⧇: āĻļāĻŋāĻĢāϟāϟāĻŋ āĻ¸ā§āĻŸā§‹āϰ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĨāĻŋāϰ āĻ¸ā§āĻĨāĻžāĻ¨ā§€ā§Ÿ āϏāĻŽā§Ÿā§‡ āĻļ⧁āϰ⧁ āĻšā§Ÿ, āĻāĻŽāύāĻ•āĻŋ āĻ•āĻ°ā§āĻŽāϚāĻžāϰ⧀ āĻ­ā§āϰāĻŽāĻŖ āĻ•āϰāϞ⧇ āĻšāϞ⧇āĻ“āĨ¤\n\nāĻāχ āĻāĻ• āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ (āĻļāĻŋāĻĄāĻŋāωāϞ āĻ•āĻŋ āĻ¸ā§āĻĨāĻžāύ⧇āϰ āϏāĻžāĻĨ⧇ āϝ⧁āĻ•ā§āϤ āĻšāĻŦ⧇ āύāĻžāĻ•āĻŋ āĻŦā§āϝāĻ•ā§āϤāĻŋāϰ āϏāĻžāĻĨ⧇) āϏāĻŦāĻ•āĻŋāϛ⧁ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰ⧇: āφāĻĒāύāĻŋ āϕ⧀ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻŦ⧇āύ, āĻ•āĻŋāĻ­āĻžāĻŦ⧇ recurrences āϤ⧈āϰāĻŋ āĻ•āϰāĻŦ⧇āύ, āĻāĻŦāĻ‚ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āĻ•ā§āϝāĻžāϞ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ­āĻŋāω āĻ•ā§ā§Ÿā§‡āϰāĻŋ āĻ•āϰāĻŦ⧇āύ āϝ⧇āύ āĻāĻ•-āϘāĻ¨ā§āϟāĻžāϰ āĻ…āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻŋāϤ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āύāĻž āϘāĻŸā§‡āĨ¤\n\n## āϏāĻ āĻŋāĻ• āĻŽāĻžāύāϏāĻŋāĻ• āĻŽāĻĄā§‡āϞ āĻŦ⧇āϛ⧇ āύāĻŋāύ: āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϟ āĻŦāύāĻžāĻŽ āϞ⧋āĻ•āĻžāϞ āϟāĻžāχāĻŽ\n\nāĻ…āύ⧇āĻ• āĻŦāĻžāĻ— āφāϏ⧇ āĻĻ⧁āϟāĻŋ āĻ­āĻŋāĻ¨ā§āύ āϏāĻŽā§Ÿ āϧāĻžāϰāĻŖāĻž āĻŽāĻŋāĻļā§āϰāĻŋāϤ āĻ•āϰāĻžāϰ āĻĢāϞ⧇:\n\n- āĻāĻ•āϟāĻŋ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϟ: āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻŽā§āĻšā§‚āĻ°ā§āϤ āϝāĻž āĻāĻ•āĻŦāĻžāϰ āϘāĻŸā§‡āĨ¤\n- āĻāĻ•āϟāĻŋ āϞ⧋āĻ•āĻžāϞ āϟāĻžāχāĻŽ āϰ⧁āϞ: āĻāĻ•āϟāĻŋ āĻ“ā§ŸāĻžāϞ āĻ•ā§āϞāĻ• āϟāĻžāχāĻŽ āϝ⧇āĻŽāύ "āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏ⧋āĻŽāĻŦāĻžāϰ āĻĒā§āϝāĻžāϰāĻŋāϏ⧇ āϏāĻ•āĻžāϞ 9:00"āĨ¤\n\nāĻāĻ•āϟāĻŋ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϟ āϏāĻ°ā§āĻŦāĻ¤ā§āϰ āĻāĻ•āχāĨ¤ "2026-03-10 14:00 UTC" āĻāĻ•āϟāĻŋ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϟāĨ¤ āĻ­āĻŋāĻĄāĻŋāĻ“ āĻ•āϞ, āĻĢā§āϞāĻžāχāϟ āĻĄāĻŋāĻĒāĻžāϰāϚāĻžāϰ, āĻāĻŦāĻ‚ "āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻŽā§āĻšā§‚āĻ°ā§āϤ⧇ āύ⧋āϟāĻŋāĻĢāĻžāχ āĻĒāĻžāĻ āĻžāĻ“" āϏāĻžāϧāĻžāϰāĻŖāϤ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϟāĨ¤\n\nāϞ⧋āĻ•āĻžāϞ āϟāĻžāχāĻŽ āĻšāϞ⧋ āϞ⧋āϕ⧇āϰāĻž āϝ⧇ āϘ⧜āĻŋāϤ⧇ āĻĻ⧇āϖ⧇ āϏ⧇āχ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āϏāĻŽā§ŸāĨ¤ "āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏāĻĒā§āϤāĻžāĻšā§‡āϰ āĻĻāĻŋāύ āĻĒā§āϝāĻžāϰāĻŋāϏ⧇ āϏāĻ•āĻžāϞ 9:00" āĻšāϞ āϞ⧋āĻ•āĻžāϞ āϟāĻžāχāĻŽāĨ¤ āĻ¸ā§āĻŸā§‹āϰ⧇āϰ āϏāĻŽā§Ÿ, āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤ āĻ•ā§āϞāĻžāϏ, āĻāĻŦāĻ‚ āĻ¸ā§āϟāĻžāĻĢ āĻļāĻŋāĻĢāϟ āϏāĻžāϧāĻžāϰāĻŖāϤ āϕ⧋āύ⧋ āϞ⧋āϕ⧇āĻļāύ⧇āϰ āϟāĻžāχāĻŽāĻœā§‹āύ⧇ āĻ…ā§āϝāĻžāĻ™ā§āĻ•āϰ āĻ•āϰāĻž āĻšā§ŸāĨ¤ āϟāĻžāχāĻŽāĻœā§‹āύāϟāĻŋ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ⧇āϰ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ¨ā§Ÿâ€”āĻāϟāĻŋ āĻ…āĻ°ā§āĻĨ⧇āϰ āĻ…āĻ‚āĻļāĨ¤\n\nāϏāϰāϞ āĻāĻ•āϟāĻŋ āύ⧀āϤāĻŋāϏ⧂āĻ¤ā§āϰ:\n\n- āχāϭ⧇āĻ¨ā§āϟ āϝāĻĻāĻŋ āϏāĻžāϰāĻž āĻŦāĻŋāĻļā§āĻŦ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ• āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻŽā§āĻšā§‚āĻ°ā§āϤ⧇ āϘāϟāϤ⧇ āĻšāĻŦ⧇, āϤāĻžāĻšāϞ⧇ start/end āϕ⧇ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϟ āĻšāĻŋāϏ⧇āĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ (timestamptz)āĨ¤\n- āχāϭ⧇āĻ¨ā§āϟ āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĨāĻžāύ⧇āϰ āϘ⧜āĻŋāϰ āϏāĻŽā§Ÿ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧇, āϤāĻžāĻšāϞ⧇ āϞ⧋āĻ•āĻžāϞ āϤāĻžāϰāĻŋāĻ– āĻ“ āϞ⧋āĻ•āĻžāϞ āϏāĻŽā§Ÿ āĻĒā§āϞāĻžāϏ āĻāĻ•āϟāĻŋ zone ID āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύāĨ¤\n- āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϝāĻĻāĻŋ āĻ­ā§āϰāĻŽāĻŖ āĻ•āϰ⧇, āĻĻ⧇āĻ–āĻžāύ⧋āϰ āϏāĻŽā§Ÿ āĻ­āĻŋāĻ‰ā§ŸāĻžāϰ⧇āϰ āĻœā§‹āύ⧇ āϏāĻŽā§Ÿ āĻĻ⧇āĻ–āĻžāύ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻļāĻŋāĻĄāĻŋāωāϞāϕ⧇ āϤāĻžāϰ āύāĻŋāĻœā§‡āĻ¸ā§āĻŦ āĻœā§‹āύ⧇ āĻ…ā§āϝāĻžāĻ™ā§āĻ•āϰ āĻ•āϰ⧁āύāĨ¤\n- offsets āϝ⧇āĻŽāύ "+02:00" āĻĨ⧇āϕ⧇ āĻœā§‹āύ āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰāĻŦ⧇āύ āύāĻž — offsets āĻ DST āύāĻŋ⧟āĻŽ āĻĨāĻžāϕ⧇ āύāĻžāĨ¤\n\nāωāĻĻāĻžāĻšāϰāĻŖ: āĻāĻ•āϟāĻŋ āĻšāĻžāϏāĻĒāĻžāϤāĻžāϞ⧇āϰ āĻļāĻŋāĻĢāϟ "āϏ⧋āĻŽ-āĻļ⧁āĻ•ā§āϰ 09:00-17:00 America/New_York"āĨ¤ DST āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āϏāĻĒā§āϤāĻžāĻšā§‡ āĻļāĻŋāĻĢāϟ āϞ⧋āĻ•āĻžāϞāĻŋ āĻāĻ–āύ⧋ 9 āĻĨ⧇āϕ⧇ 5 āĻĨāĻžāĻ•āĻŦ⧇, āϝāĻĻāĻŋāĻ“ UTC āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϟāϗ⧁āϞ⧋ āĻāĻ• āϘāĻŖā§āϟāĻž āϏāϰ⧇ āϝāĻžāĻŦ⧇āĨ¤\n\n## PostgreSQL-āĻ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āύ āϟāĻžāχāĻĒāϗ⧁āϞ⧋ (āĻāĻŦāĻ‚ āϕ⧀ āĻāĻĄāĻŧāĻžāύ⧋ āωāϚāĻŋāϤ)\n\nāĻ…āϧāĻŋāĻ•āĻžāĻ‚āĻļ āĻ•ā§āϝāĻžāϞ⧇āĻ¨ā§āĻĄāĻžāϰ āĻŦāĻžāĻ— āĻļ⧁āϰ⧁ āĻšā§Ÿ āĻāĻ•āϟāĻŋ āϭ⧁āϞ āĻ•āϞāĻžāĻŽ āϟāĻžāχāĻĒ āĻĨ⧇āϕ⧇āĨ¤ āĻŽā§‚āϞ āϞāĻ•ā§āĻˇā§āϝ āĻšāϞ āĻāĻ•āϟāĻŋ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻŽā§āĻšā§‚āĻ°ā§āϤāϕ⧇ āĻ“ā§ŸāĻžāϞ-āĻ•ā§āϞāĻ• āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻž āĻĨ⧇āϕ⧇ āφāϞāĻžāĻĻāĻž āĻ•āϰāĻžāĨ¤\n\nāĻŦāĻžāĻ¸ā§āϤāĻŦ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϟāϗ⧁āϞ⧋āϰ āϜāĻ¨ā§āϝ timestamptz āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ: āĻŦ⧁āĻ•āĻŋāĻ‚, āĻ•ā§āϞāĻ•-āχāύ, āύ⧋āϟāĻŋāĻĢāĻŋāϕ⧇āĻļāύ āĻāĻŦāĻ‚ āĻāĻŽāύ āĻ•āĻŋāϛ⧁ āϝ⧇āϟāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻŦāĻž āĻ…āĻžā§āϚāϞ⧇āϰ āωāĻĒāϰ āĻ•ā§āϰāϏ-āϤ⧁āϞāύāĻž āĻ•āϰāĻž āĻšā§ŸāĨ¤ PostgreSQL āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻŦāϏāϞ⧁āϟ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϟ āĻšāĻŋāϏ⧇āĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰ⧇, āĻĢāϞ⧇ āĻ…āĻ°ā§āĻĄāĻžāϰ āĻāĻŦāĻ‚ āĻ“āĻ­āĻžāϰāĻ˛ā§āϝāĻžāĻĒ āĻšā§‡āĻ• āĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤\n\nāϞ⧋āĻ•āĻžāϞ āĻ“ā§ŸāĻžāϞ-āĻ•ā§āϞāĻ• āĻŽāĻžāύāϗ⧁āϞ⧋āϰ āϜāĻ¨ā§āϝ timestamp without time zone āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ, āϝ⧇āĻŽāύ "āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏ⧋āĻŽāĻŦāĻžāϰ 09:00" āĻŦāĻž "āĻĻā§‹āĻ•āĻžāύ āĻ–ā§‹āϞ⧇ 10:00"āĨ¤ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϟāĻžāχāĻŽ āĻœā§‹āύ āφāχāĻĄāĻŋāϰ āϏāĻžāĻĨ⧇ āĻœā§‹ā§œāĻžāύ, āĻāĻŦāĻ‚ occurrences āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿāχ āĻŦāĻžāĻ¸ā§āϤāĻŦ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻŸā§‡ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰāĻŦ⧇āύāĨ¤\n\nāĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ⧇āϰ āϜāĻ¨ā§āϝ āĻŽā§ŒāϞāĻŋāĻ• āϟāĻžāχāĻĒāϗ⧁āϞ⧋ āϏāĻšāĻžā§ŸāϤāĻž āĻ•āϰ⧇:\n\n- date āĻĻāĻŋāύ⧇āϰ-āĻļ⧁āϧ⧁ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ (āϛ⧁āϟāĻŋāϰ āĻĻāĻŋāύ) āϜāĻ¨ā§āϝ\n- time āĻĻ⧈āύāĻ¨ā§āĻĻāĻŋāύ āĻļ⧁āϰ⧁āϰ āϏāĻŽā§Ÿā§‡āϰ āϜāĻ¨ā§āϝ\n- interval āĻŽā§‡ā§ŸāĻžāĻĻ (āϝ⧇āĻŽāύ 6 āϘāĻ¨ā§āϟāĻžāϰ āĻļāĻŋāĻĢāϟ) āϜāĻ¨ā§āϝ\n\nāϟāĻžāχāĻŽāĻœā§‹āύāϟāĻŋ IANA āύāĻžāĻŽā§‡ (āωāĻĻāĻžāĻšāϰāĻŖ: America/New_York) text āĻ•āϞāĻžāĻŽā§‡ (āĻŦāĻž āϛ⧋āϟ āϞ⧁āĻ•āφāĻĒ āĻŸā§‡āĻŦāĻŋāϞ⧇) āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύāĨ¤ -0500 āĻŽāϤ⧋ offsets āϝāĻĨ⧇āĻˇā§āϟ āύ⧟ āĻ•āĻžāϰāĻŖ āϏ⧇āϗ⧁āϞ⧋āϤ⧇ DST āύāĻŋ⧟āĻŽ āĻĨāĻžāϕ⧇ āύāĻžāĨ¤\n\nāĻ…āύ⧇āĻ• āĻ…ā§āϝāĻžāĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ• āϏ⧇āϟ:\n\n- āĻŦ⧁āĻ• āĻ•āϰāĻž āĻ…ā§āϝāĻžāĻĒā§Ÿā§‡āĻ¨ā§āϟāĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ start/end āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ timestamptz\n- āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻĻāĻŋāύ⧇āϰ āϜāĻ¨ā§āϝ date\n- āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤ āϞ⧋āĻ•āĻžāϞ āĻļ⧁āϰ⧁āϰ āϏāĻŽā§Ÿā§‡āϰ āϜāĻ¨ā§āϝ time\n- āĻĄāĻŋāωāϰ⧇āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ interval\n- IANA āϟāĻžāχāĻŽ āĻœā§‹āύ ID āϜāĻ¨ā§āϝ text\n\n## āĻŦ⧁āĻ•āĻŋāĻ‚ āĻ“ āĻļāĻŋāĻĢāϟ āĻ…ā§āϝāĻžāĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻĄā§‡āϟāĻž āĻŽāĻĄā§‡āϞ āĻ…āĻĒāĻļāύāϏāĻŽā§‚āĻš\n\nāϏ⧇āϰāĻž āĻ¸ā§āĻ•āĻŋāĻŽāĻž āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ āĻļāĻŋāĻĄāĻŋāωāϞ āĻ•āϤ āϘāύ āϘāύ āĻŦāĻĻāϞāĻžā§Ÿ āĻāĻŦāĻ‚ āĻŽāĻžāύ⧁āώ āĻ•āϤ āĻĻā§‚āϰ āĻ…āĻ—ā§āϰāĻŋāĻŽ āĻŦā§āϰāĻžāωāϜ āĻ•āϰ⧇āĨ¤ āϏāĻžāϧāĻžāϰāĻŖāϤ āφāĻĒāύāĻŋ āĻ…āύ⧇āĻ• āϰ⧋ āφāĻ—āĻžāĻŽ āϞāĻŋāĻ–āĻŦ⧇āύ āύāĻž āĻ•āĻŋ āϰāĻŋāĻĄ-āϟāĻžāχāĻŽā§‡ āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰāĻŦ⧇āύ āϤāĻž āĻŦ⧇āϛ⧇ āύāĻŋāĻšā§āϛ⧇āύāĨ¤\n\n### āĻ…āĻĒāĻļāύ A: āĻĒā§āϰāϤāĻŋāϟāĻŋ occurrence āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ\n\nāĻĒā§āϰāϤāĻŋ āĻļāĻŋāĻĢāϟ āĻŦāĻž āĻŦ⧁āĻ•āĻŋāĻ‚ā§Ÿā§‡āϰ āϜāĻ¨ā§āϝ (āĻāĻ•ā§āϏāĻĒā§āϝāĻžāĻ¨ā§āĻĄ āĻ•āϰāĻž) āĻāĻ•āϟāĻŋ āϰ⧋ āχāύāϏāĻžāĻ°ā§āϟ āĻ•āϰ⧁āύāĨ¤ āĻ•ā§ā§Ÿā§‡āϰāĻŋ āĻ•āϰāĻž āϏāĻšāϜ āĻāĻŦāĻ‚ āĻŦā§‹āϧāĻ—āĻŽā§āϝāĨ¤ āϤāĻĻā§āĻŦā§āϝāϤ⧀āϤ āĻ…āύ⧇āĻ• āϞ⧇āĻ–āύ⧀ āφāϰ āύāĻŋ⧟āĻŽ āĻŦāĻĻāϞ⧇ āϗ⧇āϞ⧇ āĻ…āύ⧇āĻ• āφāĻĒāĻĄā§‡āϟ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤\n\nāĻāϟāĻŋ āĻ­āĻžāϞ āϝāĻ–āύ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞ⧋ āĻ…āϧāĻŋāĻ•āĻžāĻ‚āĻļāχ āĻāĻ•āĻ•, āĻ…āĻĨāĻŦāĻž āϝāĻ–āύ āφāĻĒāύāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤ āφāĻ—āĻžāĻŽ (āϝ⧇āĻŽāύ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ ā§Šā§Ļ āĻĻāĻŋāύ) occurrence āϤ⧈āϰāĻŋ āĻ•āϰ⧇āύāĨ¤\n\n### āĻ…āĻĒāĻļāύ B: āĻāĻ•āϟāĻŋ āϰ⧁āϞ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇ āϰāĻŋāĻĄ-āϟāĻžāχāĻŽā§‡ āĻāĻ•ā§āϏāĻĒā§āϝāĻžāĻ¨ā§āĻĄ āĻ•āϰ⧁āύ\n\nāĻāĻ•āϟāĻŋ āĻļāĻŋāĻĄāĻŋāωāϞ āϰ⧁āϞ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ (āϝ⧇āĻŽāύ "āϏāĻĒā§āϤāĻžāĻšā§‡ āϏ⧋āĻŽāĻŦāĻžāϰ āĻ“ āĻŦ⧁āϧāĻŦāĻžāϰ 09:00 America/New_York") āĻāĻŦāĻ‚ āĻ…āύ-āĻĄāĻŋāĻŽāĻžāĻ¨ā§āĻĄ āĻ…āύ⧁āϰ⧋āϧāĻ•ā§ƒāϤ āϰ⧇āĻžā§āĻœā§‡āϰ āϜāĻ¨ā§āϝ occurrences āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰ⧁āύāĨ¤\n\nāĻāϟāĻŋ āύāĻŽāĻ¨ā§€ā§Ÿ āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻšāĻžāϞāĻ•āĻž, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻ•ā§ā§Ÿā§‡āϰāĻŋ āϜāϟāĻŋāϞ āĻšā§Ÿā§‡ āϝāĻžā§ŸāĨ¤ āĻŽāĻžāϏ āĻ­āĻŋāω āϧ⧀āϰ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āĻ•ā§āϝāĻžāĻļāĻŋāĻ‚ āύāĻž āĻ•āϰ⧇āύāĨ¤\n\n### āĻ…āĻĒāĻļāύ C: āϰ⧁āϞ āĻĒā§āϞāĻžāϏ āĻ•ā§āϝāĻžāĻļāĻĄ occurrences (āĻšāĻžāχāĻŦā§āϰāĻŋāĻĄ)\n\nāϰ⧁āϞāϕ⧇ āϏ⧋āĻ°ā§āϏ āĻ…āĻĢ āĻŸā§āϰ⧁āĻĨ āĻšāĻŋāϏ⧇āĻŦ⧇ āϰāĻžāϖ⧁āύ, āĻāĻŦāĻ‚ āĻāĻ•āχ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āϰ⧋āϞāĻŋāĻ‚ āωāχāĻ¨ā§āĻĄā§‹āϰ āϜāĻ¨ā§āϝ āϤ⧈āϰāĻŋ āĻ•āϰāĻž occurrences āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ (āωāĻĻāĻžāĻšāϰāĻŖ: 60-90 āĻĻāĻŋāύ)āĨ¤ āϰ⧁āϞ āĻŦāĻĻāϞāĻžāϞ⧇ āĻ•ā§āϝāĻžāĻļ āϰāĻŋāĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰ⧁āύāĨ¤\n\nāĻāϟāĻŋ āĻļāĻŋāĻĢāϟ āĻ…ā§āϝāĻžāĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āĻĄāĻŋāĻĢāĻ˛ā§āϟ: āĻŽāĻžāϏ āĻ­āĻŋāω āĻĻā§āϰ⧁āϤ āĻĨāĻžāϕ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻž āĻ•āϰāĻžāϰ āĻāĻ• āϜāĻžā§ŸāĻ—āĻž āĻĨāĻžāϕ⧇āĨ¤\n\nāĻĒā§āĻ°ā§āϝāĻžāĻ•āϟāĻŋāĻ•ā§āϝāĻžāϞ āĻŸā§‡āĻŦāĻŋāϞ āϏ⧇āϟ:\n\n- schedule: owner/resource, time zone, local start time, duration, recurrence rule\n- occurrence: āĻŦāĻŋāĻ¸ā§āϤ⧃āϤ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϏāϗ⧁āϞ⧋ start_at timestamptz, end_at timestamptz, āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻžāϏāϏāĻš\n- exception: "āĻāχ āϤāĻžāϰāĻŋāĻ–āϟāĻŋ āĻŦāĻžāĻĻ āĻĻāĻŋāύ" āĻŦāĻž "āĻāχ āϤāĻžāϰāĻŋāĻ–āϟāĻŋ āφāϞāĻžāĻĻāĻž" āϚāĻŋāĻ¨ā§āĻšāϗ⧁āϞ⧋\n- override: āĻĒā§āϰāϤāĻŋ-occurrence āĻāĻĄāĻŋāϟ āϝ⧇āĻŽāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻļ⧁āϰ⧁āϰ āϏāĻŽā§Ÿ, āĻŦāĻĻāϞ⧇ āϝāĻžāĻ“āϝāĻŧāĻž āĻ¸ā§āϟāĻžāĻĢ, āĻŦāĻžāϤāĻŋāϞ āĻĢā§āĻ˛ā§āϝāĻžāĻ—\n- (āϐāĻšā§āĻ›āĻŋāĻ•) schedule_cache_state: āĻļ⧇āώ āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰāĻž āϰ⧇āĻžā§āϜ āϝāĻžāϤ⧇ āφāĻĒāύāĻŋ āϜāĻžāύ⧇āύ āĻĒāϰ⧇āϰāĻŦāĻžāϰ āĻ•āĻŋ āĻĒā§‚āϰāĻŖ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇\n\nāĻ•ā§āϝāĻžāϞ⧇āĻ¨ā§āĻĄāĻžāϰ āϰ⧇āĻžā§āϜ āĻ•ā§ā§Ÿā§‡āϰāĻŋāϏ⧇āϰ āϜāĻ¨ā§āϝ, "āĻāχ āωāχāĻ¨ā§āĻĄā§‹āϤ⧇ āϏāĻŦ āĻĻ⧇āĻ–āĻžāĻ“" āϧāĻžāρāĻšā§‡ āχāύāĻĄā§‡āĻ•ā§āϏ āĻ•āϰ⧁āύ:\n\n- occurrence āϤ⧇: btree (resource_id, start_at) āĻāĻŦāĻ‚ āĻĒā§āϰāĻžāϝāĻŧāχ btree (resource_id, end_at)\n- āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āĻĒā§āϰāĻžāϝāĻŧāχ "overlaps range" āĻ•ā§ā§Ÿā§‡āϰāĻŋ āĻ•āϰ⧇āύ: āĻāĻ•āϟāĻŋ āϏ⧃āĻˇā§āϟ tstzrange(start_at, end_at) āĻāĻŦāĻ‚ gist āχāύāĻĄā§‡āĻ•ā§āϏ\n\n## āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āύāĻŋ⧟āĻŽāϗ⧁āϞ⧋ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻĻ⧁āĻ°ā§āĻŦāϞ āĻ•āϰāĻž āϝāĻžāĻŦ⧇ āύāĻž āĻāĻŽāύāĻ­āĻžāĻŦ⧇ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻŦ⧇āύ\n\nāϰ⧁āϞāϗ⧁āϞ⧋ āĻ­āĻžāĻ™ā§āϗ⧇ āϝāĻ–āύ āϤāĻž āϖ⧁āĻŦ āϚāϤ⧁āϰ, āϖ⧁āĻŦ āύāĻŽāĻ¨ā§€ā§Ÿ āĻŦāĻž āĻ…āύ āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύāϝ⧋āĻ—ā§āϝ āĻŦā§āϞāĻŦ āĻšāĻŋāϏ⧇āĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ āĻĨāĻžāϕ⧇āĨ¤ āĻāĻ•āϟāĻŋ āĻ­āĻžāϞ āϰ⧁āϞ āĻĢāϰāĻŽā§āϝāĻžāϟ āĻāĻŽāύ āĻšāĻ“ā§ŸāĻž āωāϚāĻŋāϤ āϝ⧇āϟāĻž āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ āϝāĻžāϚāĻžāχ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āϟāĻŋāĻŽ āĻĻā§āϰ⧁āϤ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤\n\nāĻĻ⧁āχāϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻĒāĻĻā§āϧāϤāĻŋ:\n\n- āφāĻĒāύāĻŋ āϝ⧇āϏāĻŦ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āĻŦāĻžāĻ¸ā§āϤāĻŦ⧇ āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻ•āϰ⧇āύ āϏ⧇āϗ⧁āϞ⧋āϰ āϜāĻ¨ā§āϝ āϏāϰāϞ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻĢāĻŋāĻ˛ā§āĻĄāĨ¤\n- āĻ…āύ⧇āĻ• āĻ•āĻŽā§āĻŦāĻŋāύ⧇āĻļāύ āχāĻŽāĻĒā§‹āĻ°ā§āϟ/āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāϤ⧇ āĻšāϞ⧇ iCalendar-āϏāĻĻ⧃āĻļ RRULEāĨ¤\n\nāĻāĻ•āϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ• āĻŽāĻ§ā§āĻ¯ā§āĻŽāĻĒāĻĨ: āϏ⧀āĻŽāĻŋāϤ āϏ⧇āĻŸā§‡āϰ āĻ…āĻĒāĻļāύ āĻ…āύ⧁āĻŽā§‹āĻĻāύ āĻ•āϰ⧇ āϏ⧇āϗ⧁āϞ⧋ āĻ•āϞāĻžāĻŽā§‡ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ, āĻāĻŦāĻ‚ āϝ⧇āϕ⧋āύ RRULE āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚āϕ⧇ āĻļ⧁āϧ⧁ āĻŦāĻŋāύāĻŋāĻŽā§Ÿā§‡āϰ āωāĻĻā§āĻĻ⧇āĻļā§āϝ⧇ āϰāĻžāϖ⧁āύāĨ¤\n\nāωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻāĻ•āϟāĻŋ āϏāĻžāĻĒā§āϤāĻžāĻšāĻŋāĻ• āĻļāĻŋāĻĢāϟ āϰ⧁āϞ āύāĻŋāĻšā§‡āϰ āĻĢāĻŋāĻ˛ā§āĻĄāϗ⧁āϞ⧋āϤ⧇ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇:\n\n- freq (daily/weekly/monthly) āĻāĻŦāĻ‚ interval (āĻĒā§āϰāϤāĻŋ N)\n- byweekday (0-6 āĻ…ā§āϝāĻžāϰ⧇āϰ āĻŽāϤ āĻ…āĻĨāĻŦāĻž āĻŦāĻŋāϟāĻŽāĻžāĻ¸ā§āĻ•)\n- āĻŽāĻžāϏāĻŋāĻ• āύāĻŋ⧟āĻŽā§‡āϰ āϜāĻ¨ā§āϝ āϐāĻšā§āĻ›āĻŋāĻ• bymonthday (1-31)\n- starts_at_local (āϝ⧇ āϞ⧋āĻ•āĻžāϞ āϤāĻžāϰāĻŋāĻ–+āϏāĻŽā§Ÿ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻŦ⧇āϛ⧇ āύāĻŋā§Ÿā§‡āϛ⧇) āĻāĻŦāĻ‚ tzid\n- āϐāĻšā§āĻ›āĻŋāĻ• until_date āĻ…āĻĨāĻŦāĻž count (āωāϭ⧟āχ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰāĻŦ⧇āύ āύāĻž āϝāĻĻāĻŋ āĻĒā§āĻ°ā§Ÿā§‹āϜāύ āύāĻž āĻĨāĻžāϕ⧇)\n\nāϏ⧀āĻŽāĻžāϰ āϜāĻ¨ā§āϝ, duration (āϝ⧇āĻŽāύ 8 āϘāĻ¨ā§āϟāĻž) āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āĻ­āĻžāϞ, āĻĒā§āϰāϤāĻŋāϟāĻŋ occurrence-āĻāϰ āϜāĻ¨ā§āϝ āφāϞāĻžāĻĻāĻž end timestamp āϰāĻžāĻ–āĻžāϰ āĻŦāĻĻāϞ⧇āĨ¤ āĻ•ā§āϞāĻ• āϏāϰ⧇ āϗ⧇āϞ⧇ duration āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āĻĨāĻžāϕ⧇āĨ¤ āφāĻĒāύāĻŋ āĻĒā§āϰāϤāĻŋāϟāĻŋ occurrence-āĻāϰ āϜāĻ¨ā§āϝ end time āĻšāĻŋāϏāĻžāĻŦ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ: occurrence start + durationāĨ¤\n\nāϰ⧁āϞ āĻāĻ•ā§āϏāĻĒā§āϝāĻžāĻ¨ā§āĻĄ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āύāĻŋāϰāĻžāĻĒāĻĻ āĻ“ āϏ⧀āĻŽāĻŋāϤ āϰāĻžāϖ⧁āύ:\n\n- āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ window_start āĻāĻŦāĻ‚ window_end āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•ā§āϏāĻĒā§āϝāĻžāĻ¨ā§āĻĄ āĻ•āϰ⧁āύāĨ¤\n- āĻ“āĻ­āĻžāϰāύāĻžāχāϟ āχāϭ⧇āĻ¨ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϛ⧋āϟ āĻŦāĻžāĻĢāĻžāϰ āϝ⧋āĻ— āĻ•āϰ⧁āύ (āωāĻĻāĻžāĻšāϰāĻŖ: 1 āĻĻāĻŋāύ)āĨ¤\n- āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āχāĻ¨ā§āϏāĻŸā§āϝāĻžāĻ¨ā§āϏ⧇āϰ āĻĒāϰ⧇ āĻĨāĻžāĻŽā§āύ (āϝ⧇āĻŽāύ 500)āĨ¤\n- āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰāĻžāϰ āφāϗ⧇ āĻĒā§āϰāĻĨāĻŽā§‡ āĻĒā§āϰāĻžāĻ°ā§āĻĨā§€ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ•āϰ⧁āύ (tzid, freq, āĻāĻŦāĻ‚ start date āĻĻā§āĻŦāĻžāϰāĻž)āĨ¤\n\n## āϧāĻžāĻĒ⧇ āϧāĻžāĻĒ⧇: DST-āύāĻŋāϰāĻžāĻĒāĻĻ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤ āĻļāĻŋāĻĄāĻŋāωāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻž\n\nāĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āĻšāϞ: āĻĒā§āϰāϤāĻŋāϟāĻŋ occurrence-āϕ⧇ āĻĒā§āϰāĻĨāĻŽā§‡ āĻāĻ•āϟāĻŋ āϞ⧋āĻ•āĻžāϞ āĻ•ā§āϝāĻžāϞ⧇āĻ¨ā§āĻĄāĻžāϰ āϧāĻžāϰāĻŖāĻž āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰ⧁āύ (āϤāĻžāϰāĻŋāĻ– + āϞ⧋āĻ•āĻžāϞ āϏāĻŽā§Ÿ + āϞ⧋āϕ⧇āĻļāύ⧇āϰ āϟāĻžāχāĻŽāĻœā§‹āύ), āϤāĻžāϰāĻĒāϰ āϕ⧇āĻŦāϞ āϝāĻ–āύ āφāĻĒāύāĻžāϕ⧇ āϏāĻžāϜāĻžāύ⧋, āĻ•āύāĻĢā§āϞāĻŋāĻ•ā§āϟ āĻšā§‡āĻ• āĻŦāĻž āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϤāĻ–āύāχ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻŸā§‡ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰ⧁āύāĨ¤\n\n### 1) UTC āĻ…āύ⧁āĻŽāĻžāύ āύ⧟, āϞ⧋āĻ•āĻžāϞ āχāĻšā§āĻ›āĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ\n\nāĻļāĻŋāĻĄāĻŋāωāϞ⧇āϰ āϞ⧋āϕ⧇āĻļāύ āϟāĻžāχāĻŽāĻœā§‹āύ (IANA āύāĻžāĻŽ āϝ⧇āĻŽāύ America/New_York) āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āϞ⧋āĻ•āĻžāϞ āĻļ⧁āϰ⧁āϰ āϏāĻŽā§Ÿ (āωāĻĻāĻžāĻšāϰāĻŖ 09:00) āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύāĨ¤ āĻāχ āϞ⧋āĻ•āĻžāϞ āϏāĻŽā§Ÿ āĻŦā§āϝāĻŦāϏāĻžāϰ āωāĻĻā§āĻĻ⧇āĻļā§āϝāχ, āĻāĻŽāύāĻ•āĻŋ āϝāĻ–āύ DST āĻŦāĻĻāϞ⧇ āϝāĻžā§ŸāĨ¤\n\nāĻāĻ•āϟāĻŋ āĻĄāĻŋāωāϰ⧇āĻļāύ āĻāĻŦāĻ‚ āϰ⧁āϞ⧇āϰ āĻ¸ā§āĻĒāĻˇā§āϟ āϏ⧀āĻŽāĻžāĻ“ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ: āĻāĻ•āϟāĻŋ start date, āĻāĻŦāĻ‚ āĻ…āĻĨāĻŦāĻž āĻāĻ•āϟāĻŋ end date āĻŦāĻž repeat countāĨ¤ āϏ⧀āĻŽāĻžāϰ⧇āĻ–āĻž "āĻ…āύāĻ¨ā§āϤ āĻāĻ•ā§āϏāĻĒā§āϝāĻžāύāĻļāύ" āĻŦāĻžāĻ— āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ•āϰ⧇āĨ¤\n\n### 2) āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻāĻŦāĻ‚ āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ āφāϞāĻžāĻĻāĻžāĻ­āĻžāĻŦ⧇ āĻŽāĻĄā§‡āϞ āĻ•āϰ⧁āύ\n\nāĻĻ⧁āĻŸā§‹ āϛ⧋āϟ āĻŸā§‡āĻŦāĻŋāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ: āĻāĻ•āϟāĻŋ āĻ¸ā§āĻ•āĻŋāĻĒ-āϤāĻžāϰāĻŋāϖ⧇āϰ āϜāĻ¨ā§āϝ, āφāϰ⧇āĻ•āϟāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ occurrence-āϰ āϜāĻ¨ā§āϝāĨ¤ āϏ⧇āϗ⧁āϞ⧋āϕ⧇ schedule_id + local_date āĻĻā§āĻŦāĻžāϰāĻž āϕ⧀āϗ⧁āϞ⧋ āĻ•āϰ⧇ āϰāĻžāϖ⧁āύ āϝāĻžāϤ⧇ āĻŽā§‚āϞ recurrence āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰāĻ­āĻžāĻŦ⧇ āĻŽā§āϝāĻžāϚ āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤\n\nāĻāĻ•āϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ• āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻĻ⧇āĻ–āϤ⧇ āĻāϰāĻ•āĻŽ:\n\nsql\n-- core schedule\n-- tz is the location time zone\n-- start_time is local wall-clock time\nschedule(id, tz text, start_date date, end_date date, start_time time, duration_mins int, by_dow int[])\n\nschedule_skip(schedule_id, local_date date)\n\nschedule_override(schedule_id, local_date date, new_start_time time, new_duration_mins int)\n\n\n### 3) āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻ…āύ⧁āϰ⧋āϧāĻ•ā§ƒāϤ āωāχāĻ¨ā§āĻĄā§‹āϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•ā§āϏāĻĒā§āϝāĻžāĻ¨ā§āĻĄ āĻ•āϰ⧁āύ\n\nāϝ⧇ āϰ⧇āĻžā§āϜāϟāĻŋ āφāĻĒāύāĻŋ āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ•āϰāϛ⧇āύ (āϏāĻĒā§āϤāĻžāĻš, āĻŽāĻžāϏ) āϏ⧇āχ āϰ⧇āĻžā§āĻœā§‡āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻžāĻ°ā§āĻĨā§€ āϞ⧋āĻ•āĻžāϞ āϤāĻžāϰāĻŋāĻ–āϗ⧁āϞ⧋ āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ āĻĻāĻŋāύ-āĻ…āĻĢ-āωāχāĻ• āĻĻā§āĻŦāĻžāϰāĻž āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ•āϰ⧁āύ, āĻāĻŦāĻ‚ āĻĒāϰ⧇ āĻ¸ā§āĻ•āĻŋāĻĒ āĻ“ āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧁āύāĨ¤\n\nsql\nWITH days AS (\n SELECT d::date AS local_date\n FROM generate_series($1::date, $2::date, interval '1 day') d\n), base AS (\n SELECT s.id, s.tz, days.local_date,\n make_timestamp(extract(year from days.local_date)::int,\n extract(month from days.local_date)::int,\n extract(day from days.local_date)::int,\n extract(hour from s.start_time)::int,\n extract(minute from s.start_time)::int, 0) AS local_start\n FROM schedule s\n JOIN days ON days.local_date BETWEEN s.start_date AND s.end_date\n WHERE extract(dow from days.local_date)::int = ANY (s.by_dow)\n)\nSELECT b.id,\n (b.local_start AT TIME ZONE b.tz) AS start_utc\nFROM base b\nLEFT JOIN schedule_skip sk\n ON sk.schedule_id = b.id AND sk.local_date = b.local_date\nWHERE sk.schedule_id IS NULL;\n\n\n### 4) āĻļ⧇āώ⧇ āĻ­āĻŋāĻ‰ā§ŸāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰ⧁āύ\n\nstart_utc āϕ⧇ timestamptz āĻšāĻŋāϏ⧇āĻŦ⧇ āϰāĻžāϖ⧁āύ āϏāĻžāϜāĻžāύ⧋āϰ, āĻ•āύāĻĢā§āϞāĻŋāĻ•ā§āϟ āĻšā§‡āĻ• āĻāĻŦāĻ‚ āĻŦ⧁āĻ•āĻŋāĻ‚ā§Ÿā§‡āϰ āϜāĻ¨ā§āϝāĨ¤ āϕ⧇āĻŦāϞ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ⧇āϰ āϏāĻŽā§Ÿ āĻ­āĻŋāĻ‰ā§ŸāĻžāϰ⧇āϰ āϟāĻžāχāĻŽāĻœā§‹āύ⧇ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰ⧁āύāĨ¤ āĻāϤ⧇ DST-āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āĻ…āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻŋāϤ āϘāϟāύāĻž āĻā§œāĻžāύ⧋ āϝāĻžā§Ÿ āĻāĻŦāĻ‚ āĻ•ā§āϝāĻžāϞ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ­āĻŋāω āĻ¸ā§āĻĨāĻŋāϰ āĻĨāĻžāϕ⧇āĨ¤\n\n## āϏāĻ āĻŋāĻ• āĻ•ā§āϝāĻžāϞ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ­āĻŋāω āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰāĻžāϰ āĻ•ā§ā§Ÿā§‡āϰāĻŋ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύāϏāĻŽā§‚āĻš\n\nāĻāĻ•āϟāĻŋ āĻ•ā§āϝāĻžāϞ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ¸ā§āĻ•ā§āϰāĻŋāύ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāĻ•āϟāĻŋ āϰ⧇āĻžā§āϜ āĻ•ā§ā§Ÿā§‡āϰāĻŋ: "āφāĻŽāĻžāϕ⧇ āϏāĻŦ āĻĻ⧇āĻ–āĻžāĻ“ from_ts āĻāĻŦāĻ‚ to_ts āĻāϰ āĻŽāĻ§ā§āϝ⧇"āĨ¤ āĻāĻ•āϟāĻŋ āύāĻŋāϰāĻžāĻĒāĻĻ āϧāĻžāϰāĻž:\n\n1) āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϐ āωāχāĻ¨ā§āĻĄā§‹āϰ āϭ⧇āϤāϰ⧇āϰ āĻĒā§āϰāĻžāĻ°ā§āĻĨā§€ āĻāĻ•ā§āϏāĻĒā§āϝāĻžāĻ¨ā§āĻĄ āĻ•āϰ⧁āύāĨ¤\n2) āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ/āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ āĻĒā§āĻ°ā§Ÿā§‹āĻ— āĻ•āϰ⧁āύāĨ¤\n3) āĻĢāĻžāχāύāĻžāϞ āϰ⧋ āφāωāϟāĻĒ⧁āϟ āĻ•āϰ⧁āύ start_at āĻāĻŦāĻ‚ end_at āĻšāĻŋāϏ⧇āĻŦ⧇ timestamptzāĨ¤\n\n### āĻĻ⧈āύāĻŋāĻ• āĻŦāĻž āϏāĻžāĻĒā§āϤāĻžāĻšāĻŋāĻ• āĻāĻ•ā§āϏāĻĒāĻžāύāĻļāύ generate_series āĻĻāĻŋā§Ÿā§‡\n\nāϏāĻšāϜ āϏāĻžāĻĒā§āϤāĻžāĻšāĻŋāĻ• āϰ⧁āϞāϗ⧁āϞ⧋āϰ āϜāĻ¨ā§āϝ (āϝ⧇āĻŽāύ "āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏ⧋āĻŽ-āĻļ⧁āĻ•ā§āϰ 09:00 āϞ⧋āĻ•āĻžāϞ"), āĻĒā§āϰāĻĨāĻŽā§‡ āϞ⧋āĻ•āĻžāϞ āϤāĻžāϰāĻŋāĻ–āϗ⧁āϞ⧋ āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰ⧁āύ āĻļāĻŋāĻĄāĻŋāωāϞ⧇āϰ āϟāĻžāχāĻŽāĻœā§‹āύ⧇, āϤāĻžāϰāĻĒāϰ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϞ⧋āĻ•āĻžāϞ āϤāĻžāϰāĻŋāĻ– + āϞ⧋āĻ•āĻžāϞ āϟāĻžāχāĻŽāϕ⧇ āĻāĻ•āϟāĻŋ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻŸā§‡ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰ⧁āύāĨ¤\n\nsql\n-- Inputs: :from_ts, :to_ts are timestamptz\n-- rule.tz is an IANA zone like 'America/New_York'\nWITH bounds AS (\n SELECT\n (:from_ts AT TIME ZONE rule.tz)::date AS from_local_date,\n (:to_ts AT TIME ZONE rule.tz)::date AS to_local_date\n FROM rule\n WHERE rule.id = :rule_id\n), days AS (\n SELECT d::date AS local_date\n FROM bounds, generate_series(from_local_date, to_local_date, interval '1 day') AS g(d)\n)\nSELECT\n (local_date + rule.start_local_time) AT TIME ZONE rule.tz AS start_at,\n (local_date + rule.end_local_time) AT TIME ZONE rule.tz AS end_at\nFROM rule\nJOIN days ON true\nWHERE EXTRACT(ISODOW FROM local_date) = ANY(rule.by_isodow);\n\n\nāĻāϟāĻŋ āĻ­āĻžāϞāĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ āĻ•āĻžāϰāĻŖ āĻĒā§āϰāϤāĻŋāϟāĻŋ occurrence-āĻ timestamptz-āĻ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻšā§Ÿ, āϤāĻžāχ DST āĻŦāĻĻāϞ āϏāĻ āĻŋāĻ• āĻĻāĻŋāύ āĻ…āύ⧁āϝāĻžā§Ÿā§€ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āĻšā§ŸāĨ¤\n\n### "nth weekday" āĻŦāĻž āĻ•āĻžāĻ¸ā§āϟāĻŽ āχāĻ¨ā§āϟāĻžāϰāĻ­āĻžāϞ āĻšāϞ⧇ āϰāĻŋāĻ•āĻžāĻ°ā§āϏāĻŋāĻ­ CTE\n\nāϝāĻ–āύ āϰ⧁āϞāϗ⧁āϞ⧋ "nth weekday"-āĻāϰ āĻ“āĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇, āĻĢāĻžāρāĻ• āĻĨāĻžāϕ⧇, āĻŦāĻž āĻ•āĻžāĻ¸ā§āϟāĻŽ āχāĻ¨ā§āϟāĻžāϰāĻ­āĻžāϞ āĻĨāĻžāϕ⧇, āϤāĻ–āύ āĻāĻ•āϟāĻŋ āϰāĻŋāĻ•āĻžāĻ°ā§āϏāĻŋāĻ­ CTE āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻĒāϰ⧇āϰ occurrence āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āϝāϤāĻ•ā§āώāĻŖ āύāĻž āĻāϟāĻŋ to_ts āĻĒāĻžāϰ āĻ•āϰ⧇āĨ¤ āϰāĻŋāĻ•āĻžāĻ°ā§āϏāύāϕ⧇ āωāχāĻ¨ā§āĻĄā§‹āϰ āϏāĻ™ā§āϗ⧇ āĻ…ā§āϝāĻžāĻ™ā§āĻ•āϰ āĻ•āϰ⧇ āϰāĻžāϖ⧁āύ āϝāĻžāϤ⧇ āĻāϟāĻŋ āĻ…āύāĻ¨ā§āϤ āϚāĻžāϞāĻŋāϤ āύāĻž āĻšā§ŸāĨ¤\n\nāĻĒā§āϰāĻžāĻ°ā§āĻĨā§€ āϰ⧋ āĻĒāĻžāĻ“ā§ŸāĻž āϗ⧇āϞ⧇, exception āĻāĻŦāĻ‚ cancellation āĻĒā§āĻ°ā§Ÿā§‹āĻ— āĻ•āϰ⧁āύ (rule_id, start_at) āĻŦāĻž āĻ¸ā§āĻĨāĻžāĻ¨ā§€ā§Ÿ āϕ⧀ (rule_id, local_date) āĻĻā§āĻŦāĻžāϰāĻž āĻœā§‹ā§ŸāĻžāχāύ⧇āĨ¤ āϝāĻĻāĻŋ āĻ•ā§āϝāĻžāύāϏ⧇āϞ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻĨāĻžāϕ⧇, āϰ⧋ āĻŦāĻžāĻĻ āĻĻāĻŋāύāĨ¤ āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ āĻĨāĻžāĻ•āϞ⧇ start_at/end_at āϕ⧇ āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ āĻŽāĻžāύ āĻĻāĻŋā§Ÿā§‡ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧁āύāĨ¤\n\nāĻ•āĻžāĻ°ā§āϝāĻ•ā§āώāĻŽāϤāĻž āĻŦāĻŋāώ⧟āĻ• āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āϝāĻž āϏāĻŦāĻšā§‡ā§Ÿā§‡ āĻŦ⧇āĻļāĻŋ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ:\n\n- āĻĒā§āϰāĻĨāĻŽā§‡āχ āϰ⧇āĻžā§āϜ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧ āĻ•āϰ⧁āύ: āφāϗ⧇ āϰ⧁āϞāϗ⧁āϞ⧋ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ āϕ⧇āĻŦāϞ [from_ts, to_ts)-āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•ā§āϏāĻĒā§āϝāĻžāĻ¨ā§āĻĄ āĻ•āϰ⧁āύāĨ¤\n- exception/override āĻŸā§‡āĻŦāĻŋāϞāϗ⧁āϞ⧋āϕ⧇ (rule_id, start_at) āĻŦāĻž (rule_id, local_date)-āĻ āχāύāĻĄā§‡āĻ•ā§āϏ āĻ•āϰ⧁āύāĨ¤\n- āĻŽāĻžāϏ āĻ­āĻŋāĻ‰ā§Ÿā§‡āϰ āϜāĻ¨ā§āϝ āĻŦāĻ›āϰ⧇āϰ āĻĄāĻžāϟāĻž āĻāĻ•ā§āϏāĻĒā§āϝāĻžāĻ¨ā§āĻĄ āĻ•āϰāĻž āĻĨ⧇āϕ⧇ āĻŦāĻŋāϰāϤ āĻĨāĻžāϕ⧁āύāĨ¤\n- āϰ⧁āϞ āĻŦāĻĻāϞ⧇ āϗ⧇āϞ⧇ āĻ•ā§āϝāĻžāĻļ āύāĻŋāĻˇā§āĻ•ā§āϰāĻŋ⧟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāϞ⧇ āϕ⧇āĻŦāϞ āϤāĻ–āύāχ expanded occurrences āĻ•ā§āϝāĻžāĻļ āĻ•āϰ⧁āύāĨ¤\n\n## āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻāĻŦāĻ‚ āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰāĻ­āĻžāĻŦ⧇ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞ āĻ•āϰāĻž\n\nāĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤ āĻļāĻŋāĻĄāĻŋāωāϞāϗ⧁āϞāĻž āϤāĻ–āύāχ āĻŦā§āϝāĻŦāĻšāĻžāϰāϝ⧋āĻ—ā§āϝ āϝāĻ–āύ āφāĻĒāύāĻŋ āϤāĻž āϏāĻšāĻœā§‡ āĻ­āĻžāĻ™āϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āĻŦ⧁āĻ•āĻŋāĻ‚ āĻ“ āĻļāĻŋāĻĢāϟ āĻ…ā§āϝāĻžāĻĒ⧇, "āϏāĻžāϧāĻžāϰāĻŖ" āϏāĻĒā§āϤāĻžāĻš āĻšāϞ⧋ āĻŦ⧇āϏ āϰ⧁āϞ, āĻāĻŦāĻ‚ āĻŦāĻžāϕ⧀ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ: āϛ⧁āϟāĻŋ, āĻŦāĻžāϤāĻŋāϞ, āϏāϰāĻžāύ⧋ āĻ…ā§āϝāĻžāĻĒā§Ÿā§‡āĻ¨ā§āϟāĻŽā§‡āĻ¨ā§āϟ āĻŦāĻž āĻ¸ā§āϟāĻžāĻĢ āĻŦāĻĻāϞāĨ¤ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻĒāϰ⧇ āϞāĻžāĻ—āĻžāϞ⧇ āĻ•ā§āϝāĻžāϞ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ­āĻŋāω āĻĄā§āϰāĻŋāĻĢāϟ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻĄā§āĻĒāϞāĻŋāϕ⧇āϟ āϤ⧈āϰāĻŋ āĻšā§ŸāĨ¤\n\nāϤāĻŋāύāϟāĻŋ āϧāĻžāϰāĻŖāĻž āφāϞāĻžāĻĻāĻž āϰāĻžāϖ⧁āύ:\n\n- āĻāĻ•āϟāĻŋ āĻŦ⧇āϏ āĻ¸ā§āĻ•āĻŋāĻĄāĻŋāωāϞ (āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤ āϰ⧁āϞ āĻāĻŦāĻ‚ āϤāĻžāϰ āϟāĻžāχāĻŽāĻœā§‹āύ)\n- āĻ¸ā§āĻ•āĻŋāĻĒ (āϝ⧇ āϤāĻžāϰāĻŋāĻ– āĻŦāĻž āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϏāϗ⧁āϞ⧋ āϘāϟāĻŦ⧇ āύāĻž)\n- āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ (āĻāĻ•āϟāĻŋ occurrence āφāϛ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŦāĻŋāĻŦāϰāĻŖ āĻŦāĻĻāϞ⧇ āϗ⧇āϛ⧇)\n\n### āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĨāĻŋāϰ āĻĒā§āϰāĻžāϧāĻžāĻ¨ā§āϝ āύāĻŋ⧟āĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ\n\nāĻāĻ•āϟāĻŋ āĻ•ā§āϰāĻŽ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϤāĻž āĻ•āύāϏāĻŋāĻ¸ā§āĻŸā§‡āĻ¨ā§āϟ āϰāĻžāϖ⧁āύāĨ¤ āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻĒāĻ›āĻ¨ā§āĻĻ:\n\n1) āĻŦ⧇āϏ recurrence āĻĨ⧇āϕ⧇ āĻĒā§āϰāĻžāĻ°ā§āĻĨā§€āϰāĻž āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰ⧁āύāĨ¤\n2) āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ āĻĒā§āĻ°ā§Ÿā§‹āĻ— āĻ•āϰ⧁āύ (āĻœā§‡āύāĻžāϰ⧇āϟ āĻšāĻ“ā§ŸāĻž āϰ⧋ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧁āύ)āĨ¤\n3) āĻ¸ā§āĻ•āĻŋāĻĒ āĻĒā§āĻ°ā§Ÿā§‹āĻ— āĻ•āϰ⧁āύ (āĻ—ā§‹āĻĒāύ āĻ•āϰ⧁āύ)āĨ¤\n\nāύāĻŋāϝāĻŧāĻŽāϟāĻŋ āĻāĻ• āĻŦāĻžāĻ•ā§āϝ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻ•āĻžāϛ⧇ āϏāĻšāĻœā§‡ āĻŦā§‹āĻāĻžāύ⧋ āϏāĻŽā§āĻ­āĻŦ āĻ•āĻŋāύāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύāĨ¤\n\n### āϝāĻ–āύ āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ āĻāĻ•āϟāĻŋ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϏ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧇ āϤāĻ–āύ āĻĄā§āĻĒā§āϞāĻŋāϕ⧇āϟ āĻā§œāĻžāύ\n\nāĻĄā§āĻĒā§āϞāĻŋāϕ⧇āϟ āϏāĻžāϧāĻžāϰāĻŖāϤ āϤāĻ–āύ āĻšā§Ÿ āϝāĻ–āύ āĻ•ā§ā§Ÿā§‡āϰāĻŋ āωāϭ⧟: āĻœā§‡āύāĻžāϰ⧇āĻŸā§‡āĻĄ occurrence āĻāĻŦāĻ‚ āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ āϰ⧋ āĻĢāĻŋāϰāĻŋā§Ÿā§‡ āĻĻā§‡ā§ŸāĨ¤ āĻāϟāĻž āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ•āϰ⧁āύ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āϕ⧀ āĻĻāĻŋā§Ÿā§‡:\n\n- āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻœā§‡āύāĻžāϰ⧇āĻŸā§‡āĻĄ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϏāϕ⧇ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āϕ⧀ āĻĻāĻŋāύ, āϝ⧇āĻŽāύ (schedule_id, local_date, start_time, tzid)āĨ¤\n- āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ āϰ⧋āϤ⧇ āϏ⧇āϟāĻŋ "original occurrence key" āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ¸ā§āĻŸā§‹āϰ āĻ•āϰ⧁āύāĨ¤\n- āĻāĻ•āϟāĻŋ unique constraint āϝ⧋āĻ— āĻ•āϰ⧁āύ āϝāĻžāϤ⧇ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻŦ⧇āϏ occurrence-āϰ āϜāĻ¨ā§āϝ āĻļ⧁āϧ⧁ āĻāĻ•āϟāĻŋ āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤\n\nāϤāĻžāϰāĻĒāϰ āĻ•ā§ā§Ÿā§‡āϰāĻŋāϤ⧇, āĻŽāĻŋāϞ āφāϛ⧇ āĻāĻŽāύ āĻœā§‡āύāĻžāϰ⧇āĻŸā§‡āĻĄ occurrence āĻŦāĻžāĻĻ āĻĻāĻŋāύ āĻāĻŦāĻ‚ āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ āϰ⧋ āχāωāύāĻŋāϝāĻŧāύ āĻ•āϰ⧇ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύāĨ¤\n\n### āĻ…āĻĄāĻŋāϟāϝ⧋āĻ—ā§āϝāϤāĻž āϝ⧋āĻ— āĻ•āϰ⧁āύ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāĻžāĻŽā§‡āϞāĻž āĻŦāĻžā§œāĻžāĻŦ⧇āύ āύāĻž\n\nāĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽāϗ⧁āϞ⧋āχ āĻŦāĻŋāϤāĻ°ā§āϕ⧇āϰ āϜāĻžā§ŸāĻ—āĻž ("āϕ⧇ āφāĻŽāĻžāϰ āĻļāĻŋāĻĢāϟ āĻŦāĻĻāϞāĻžāϞ⧋?")āĨ¤ āĻ¸ā§āĻ•āĻŋāĻĒ āĻ“ āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄā§‡ āĻŦ⧇āϏāĻŋāĻ• āĻ…āĻĄāĻŋāϟ āĻĢāĻŋāĻ˛ā§āĻĄ āϝ⧋āĻ— āĻ•āϰ⧁āύ: created_by, created_at, updated_by, updated_at, āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āϐāĻšā§āĻ›āĻŋāĻ• āĻ•āĻžāϰāĻŖāĨ¤\n\n## āĻāĻ•-āϘāĻ¨ā§āϟāĻžāϰ āĻĻā§‚āϰāϤāĻ¤ā§āϰ⧁āϟāĻŋ āϘāϟāĻžāύ⧋āϰ āϏāĻžāϧāĻžāϰāĻŖ āϭ⧁āϞāϗ⧁āϞ⧋\n\nāĻ…āϧāĻŋāĻ•āĻžāĻ‚āĻļ āĻāĻ•-āϘāĻ¨ā§āϟāĻžāϰ āĻŦāĻžāĻ— āφāϏ⧇ āĻĻ⧁āχ āϧāϰāύ⧇āϰ āϏāĻŽā§Ÿā§‡āϰ āĻŽāĻžāύ⧇ āĻŽāĻŋāĻļ⧇ āϝāĻžāĻ“ā§ŸāĻžāϰ āĻĢāϞ⧇: āĻāĻ•āϟāĻŋ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϟ (UTC āϟāĻžāχāĻŽāϞāĻžāχāύ⧇ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻ¨ā§āĻĻ⧁) āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āϞ⧋āĻ•āĻžāϞ āĻ•ā§āϞāĻ• āϰāĻŋāĻĄāĻŋāĻ‚ (āϝ⧇āĻŽāύ āύāĻŋāωāχāĻ°ā§āϕ⧇ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏ⧋āĻŽāĻŦāĻžāϰ 09:00)āĨ¤\n\nāĻāĻ•āϟāĻŋ āĻ•ā§āϞāĻžāϏāĻŋāĻ• āϭ⧁āϞ āĻšāϞ āĻāĻ•āϟāĻŋ āϞ⧋āĻ•āĻžāϞ āĻ“ā§ŸāĻžāϞ-āĻ•ā§āϞāĻ• āϰ⧁āϞ timestamptz āĻšāĻŋāϏ⧇āĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻžāĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ "āϏ⧋āĻŽāĻŦāĻžāϰ 09:00 America/New_York" āĻāĻ•āϟāĻŋ timestamptz āĻšāĻŋāϏ⧇āĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇āύ, āφāĻĒāύāĻŋ āχāϤ⧋āĻŽāĻ§ā§āϝ⧇āχ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϤāĻžāϰāĻŋāĻ– (āĻāĻŦāĻ‚ DST āĻ…āĻŦāĻ¸ā§āĻĨāĻž) āĻŦ⧇āϛ⧇ āύāĻŋā§Ÿā§‡āϛ⧇āύāĨ¤ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ āϏ⧋āĻŽāϗ⧁āϞ⧋ āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āφāϏāϞ āωāĻĻā§āĻĻ⧇āĻļā§āϝ ("āϏāĻŦāϏāĻŽā§Ÿ āϞ⧋āĻ•āĻžāϞāĻŋ 09:00") āϚāϞ⧇ āϝāĻžā§ŸāĨ¤\n\nāφāϰ⧇āĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻ•āĻžāϰāĻŖ āĻšāϞ āĻ¸ā§āĻĨāĻŋāϰ UTC offsets (-05:00) āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰāĻžāĨ¤ offsets-āĻ DST āύāĻŋ⧟āĻŽ āĻĨāĻžāϕ⧇ āύāĻžāĨ¤ America/New_York āĻāϰ āĻŽāϤ IANA zone ID āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ PostgreSQL-āϕ⧇ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϤāĻžāϰāĻŋāϖ⧇ āϏāĻ āĻŋāĻ• āύāĻŋ⧟āĻŽ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāϤ⧇ āĻĻāĻŋāύāĨ¤\n\nāĻ•āĻ–āύ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰāĻŦ⧇āύ āϏ⧇ āĻŦā§āϝāĻžāĻĒāĻžāϰ⧇ āϏāϤāĻ°ā§āĻ• āĻĨāĻžāϕ⧁āύāĨ¤ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āĻāĻ•ā§āϏāĻĒā§āϝāĻžāĻ¨ā§āϏāύ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āϖ⧁āĻŦ āĻĻā§āϰ⧁āϤ UTC āϤ⧇ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰ⧇āύ, āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ DST āĻ…āĻĢāϏ⧇āϟ āĻ¸ā§āĻĨāĻŋāϰ āĻ•āϰ⧇ āϏ⧇āϟāĻŋ āĻĒā§āϰāϤāĻŋāϟāĻŋ occurrence-āϤ⧇ āĻĒā§āĻ°ā§Ÿā§‹āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āύāĻŋāϰāĻžāĻĒāĻĻ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āĻšāϞ: occurrences āϞ⧋āĻ•āĻžāϞ āĻļāĻŦā§āĻĻ⧇ (āϤāĻžāϰāĻŋāĻ– + āϞ⧋āĻ•āĻžāϞ āϏāĻŽā§Ÿ + āĻœā§‹āύ) āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ āĻĒā§āϰāϤāĻŋāϟāĻŋ occurrence āφāϞāĻžāĻĻāĻž āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻŸā§‡ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰ⧁āύāĨ¤\n\nāϘāϟāύāĻžāϗ⧁āϞ⧋ āϝāĻž āĻŦāĻžāϰāĻ‚āĻŦāĻžāϰ āĻĻ⧇āĻ–āĻž āϝāĻžā§Ÿ:\n\n- āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤ āϞ⧋āĻ•āĻžāϞ āϟāĻžāχāĻŽ-āĻ…āĻĢ-āĻĄā§‡ timestamptz āĻšāĻŋāϏ⧇āĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž (āφāĻĒāύāĻŋ time + tzid + āĻāĻ•āϟāĻŋ āϰ⧁āϞ āĻĻāϰāĻ•āĻžāϰ āĻ›āĻŋāϞ)āĨ¤\n- āĻļ⧁āϧ⧁ āĻāĻ•āϟāĻŋ āĻ…āĻĢāϏ⧇āϟ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž, IANA āĻœā§‹āύ āύāĻž āϰāĻžāĻ–āĻžāĨ¤\n- āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻāĻ•ā§āϏāĻĒā§āϝāĻžāύāĻļāύ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āĻ•āϰāĻž āĻŦāϰāĻ‚ āĻļ⧇āώ⧇ āύāĻž āĻ•āϰāĻžāĨ¤\n- "āϚāĻŋāϰāĻĻāĻŋāύ" āϰ⧁āϞ āĻāĻ•ā§āϏāĻĒā§āϝāĻžāĻ¨ā§āĻĄ āĻ•āϰāĻž āĻŦāĻŋāύāĻž āĻ•āĻ ā§‹āϰ āϟāĻžāχāĻŽ āωāχāĻ¨ā§āĻĄā§‹ āĻ›āĻžāĻĄāĻŧāĻžāĨ¤\n- DST āĻļ⧁āϰ⧁ āĻ“ DST āĻļ⧇āώ āϏāĻĒā§āϤāĻžāĻšāϗ⧁āϞ⧋ āĻŸā§‡āĻ¸ā§āϟ āύāĻž āĻ•āϰāĻžāĨ¤\n\nāĻāĻ•āϟāĻŋ āϏāϰāϞ āĻŸā§‡āĻ¸ā§āϟ āϝāĻž āĻ…āϧāĻŋāĻ•āĻžāĻ‚āĻļ āϏāĻŽāĻ¸ā§āϝāĻž āϧāϰāĻŦ⧇: āĻāĻ•āϟāĻŋ DST-āϝ⧁āĻ•ā§āϤ āĻœā§‹āύ āύāĻŋāύ, āĻāĻ•āϟāĻŋ āϏāĻžāĻĒā§āϤāĻžāĻšāĻŋāĻ• 09:00 āĻļāĻŋāĻĢāϟ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ, āĻāĻŦāĻ‚ āĻāĻŽāύ āĻĻ⧁āϟāĻŋ āĻŽāĻžāϏ⧇āϰ āĻ•ā§āϝāĻžāϞ⧇āĻ¨ā§āĻĄāĻžāϰ āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ•āϰ⧁āύ āϝāĻž DST āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•ā§āϰāϏ āĻ•āϰ⧇āĨ¤ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ āĻĒā§āϰāϤāĻŋāϟāĻŋ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϏ āϞ⧋āĻ•āĻžāϞāĻŋ 09:00 āĻĻ⧇āĻ–āĻžā§Ÿ, āϝāĻĻāĻŋāĻ“ āφāĻ¨ā§āĻĄāĻžāϰāϞāĻžāχāĻ‚ UTC āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϟāϗ⧁āϞ⧋ āĻ­āĻŋāĻ¨ā§āύāĨ¤\n\n## āϚāĻžāϞāĻžāύ⧋āϰ āφāϗ⧇ āĻĻā§āϰ⧁āϤ āĻšā§‡āĻ•āϞāĻŋāĻ¸ā§āϟ\n\nāϰāĻŋāϞāĻŋāĻœā§‡āϰ āφāϗ⧇ āĻŽā§ŒāϞāĻŋāĻ• āĻŦāĻŋāώ⧟āϗ⧁āϞ⧋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύ:\n\n- āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻļāĻŋāĻĄāĻŋāωāϞ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĨāĻžāύ⧇āϰ (āĻŦāĻž āĻŦāĻŋāϜāύ⧇āϏ āχāωāύāĻŋāĻŸā§‡āϰ) āϏāĻžāĻĨ⧇ āϝ⧁āĻ•ā§āϤ āĻāĻŦāĻ‚ āϤāĻžāϤ⧇ āĻāĻ•āϟāĻŋ āύāĻžāĻŽāĻ•ā§ƒāϤ āϟāĻžāχāĻŽāĻœā§‹āύ āĻ¸ā§āĻŸā§‹āϰ āĻ•āϰāĻž āφāϛ⧇āĨ¤\n- āφāĻĒāύāĻŋ IANA āĻœā§‹āύ ID (āϝ⧇āĻŽāύ America/New_York) āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϛ⧇āύ, āĻ•āĻžāρāϚāĻž āĻ…āĻĢāϏ⧇āϟ āύ⧟āĨ¤\n- āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋ āĻāĻ•ā§āϏāĻĒā§āϝāĻžāύāĻļāύ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻ…āύ⧁āϰ⧋āϧāĻ•ā§ƒāϤ āϰ⧇āĻžā§āĻœā§‡āϰ āĻŽāĻ§ā§āϝ⧇ āϘāĻŸā§‡āĨ¤\n- āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ“ āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄāϗ⧁āϞ⧋āϰ āĻāĻ•āϟāĻŋ āĻāĻ•āĻ•, āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻĄ āĻĒā§āϰāĻžāϧāĻžāĻ¨ā§āϝ āĻ•ā§āϰāĻŽāĻžāύ⧁āϏāĻžāϰ⧇ āφāϛ⧇āĨ¤\n- āφāĻĒāύāĻŋ DST āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āϏāĻĒā§āϤāĻžāĻšāϗ⧁āϞ⧋ āĻāĻŦāĻ‚ āĻļāĻŋāĻĄāĻŋāωāϞ āĻĨ⧇āϕ⧇ āĻ­āĻŋāĻ¨ā§āύ āϟāĻžāχāĻŽāĻœā§‹āύ⧇āϰ āĻāĻ•āϜāύ āĻ­āĻŋāĻ‰ā§ŸāĻžāϰāϕ⧇ āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰ⧇āϛ⧇āύāĨ¤\n\nāĻāĻ•āϟāĻŋ āĻŦāĻžāĻ¸ā§āϤāĻŦāϏāĻŽā§āĻŽāϤ āĻĄā§āϰāĻžāχ āϰāĻžāύ āĻ•āϰ⧁āύ: āĻāĻ•āϟāĻŋ āĻĻā§‹āĻ•āĻžāύ Europe/Berlin-āĻ āĻĒā§āϰāϤāĻŋ āϏāĻĒā§āϤāĻžāĻšā§‡ 09:00 āϞ⧋āĻ•āĻžāϞ āĻļāĻŋāĻĢāϟ āφāϛ⧇āĨ¤ āĻāĻ•āϟāĻŋ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ America/Los_Angeles āĻĨ⧇āϕ⧇ āĻĻ⧇āϖ⧇āĨ¤ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ āĻļāĻŋāĻĢāϟ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏāĻĒā§āϤāĻžāĻšā§‡ Berlin āϟāĻžāχāĻŽā§‡ 09:00 āĻĨāĻžāϕ⧇, āĻāĻŽāύāĻ•āĻŋ āϝāĻ–āύ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻ…āĻžā§āϚāϞ āĻ­āĻŋāĻ¨ā§āύ āϏāĻŽā§Ÿā§‡ DST āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇āĨ¤\n\n## āωāĻĻāĻžāĻšāϰāĻŖ: āϏāĻžāĻĒā§āϤāĻžāĻšāĻŋāĻ• āĻ¸ā§āϟāĻžāĻĢ āĻļāĻŋāĻĢāϟ āĻāĻ• āϛ⧁āϟāĻŋ āĻ“ DST āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϏāĻš\n\nāĻāĻ•āϟāĻŋ āϛ⧋āϟ āĻ•ā§āϞāĻŋāύāĻŋāĻ• āĻāĻ•āϟāĻŋ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤ āĻļāĻŋāĻĢāϟ āϚāĻžāϞāĻžā§Ÿ: āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏ⧋āĻŽāĻŦāĻžāϰ, 09:00 āĻĨ⧇āϕ⧇ 17:00 āĻ•ā§āϞāĻŋāύāĻŋāϕ⧇āϰ āϞ⧋āĻ•āĻžāϞ āϟāĻžāχāĻŽā§‡ (America/New_York)āĨ¤ āĻ•ā§āϞāĻŋāύāĻŋāĻ• āĻāĻ• āĻŦāĻŋāĻļ⧇āώ āϏ⧋āĻŽāĻŦāĻžāϰ āĻŦāĻ¨ā§āϧ āφāϛ⧇ (āϛ⧁āϟāĻŋ)āĨ¤ āĻāĻ•āϜāύ āĻ¸ā§āϟāĻžāĻĢ āĻĻ⧁āχ āϏāĻĒā§āϤāĻžāĻš āχāωāϰ⧋āĻĒ⧇ āĻ­ā§āϰāĻŽāĻŖ āĻ•āϰāϛ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻ•ā§āϞāĻŋāύāĻŋāϕ⧇āϰ āĻļāĻŋāĻĄāĻŋāωāϞ āĻ•āĻ°ā§āĻŽāϚāĻžāϰ⧀āϰ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ⧇āϰ āωāĻĒāϰ āύ⧟, āĻ•ā§āϞāĻŋāύāĻŋāϕ⧇āϰ āĻ“ā§ŸāĻžāϞ-āϘāĻĄāĻŧāĻŋāϰ āωāĻĒāϰ āĻ…ā§āϝāĻžāĻ™ā§āĻ•āϰ āĻ•āϰāĻž āĻĨāĻžāĻ•āĻž āωāϚāĻŋāϤāĨ¤\n\nāĻāϟāĻŋ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ:\n\n- āϞ⧋āĻ•āĻžāϞ āϤāĻžāϰāĻŋāϖ⧇ āĻ…ā§āϝāĻžāĻ™ā§āĻ•āϰ āĻ•āϰāĻž āĻāĻ•āϟāĻŋ āϰāĻŋāĻ•āĻžāϰ⧇āĻ¨ā§āϏ āϰ⧁āϞ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ (weekday = Monday, āϞ⧋āĻ•āĻžāϞ āϏāĻŽā§Ÿ = 09:00-17:00)\n- āĻļāĻŋāĻĄāĻŋāωāϞ⧇āϰ āϟāĻžāχāĻŽāĻœā§‹āύ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ (America/New_York)\n- āϰ⧁āϞāϕ⧇ āĻāĻ•āϟāĻŋ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ start date āĻĻāĻŋāύ āϝāĻžāϤ⧇ āĻ¸ā§āĻĒāĻˇā§āϟ āĻ…ā§āϝāĻžāĻ™ā§āĻ•āϰ āĻĨāĻžāϕ⧇\n- āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύ āϝāĻž āϏ⧇āχ āϛ⧁āϟāĻŋ āϏ⧋āĻŽāĻŦāĻžāϰ āĻŦāĻžāϤāĻŋāϞ āĻ•āϰ⧇ (āĻāĻŦāĻ‚ āĻāĻ•-āĻŦāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞ⧋āϰ āϜāĻ¨ā§āϝ āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ)\n\nāĻāĻ–āύ āĻāĻ•āϟāĻŋ āĻĻ⧁āχ āϏāĻĒā§āϤāĻžāĻšā§‡āϰ āĻ•ā§āϝāĻžāϞ⧇āĻ¨ā§āĻĄāĻžāϰ āϰ⧇āĻžā§āϜ āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ•āϰ⧁āύ āϝāĻž New York-āĻ āĻāĻ•āϟāĻŋ DST āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰ⧇āĨ¤ āĻ•ā§ā§Ÿā§‡āϰāĻŋ āϐ āϞ⧋āĻ•āĻžāϞ āϤāĻžāϰāĻŋāĻ– āϰ⧇āĻžā§āĻœā§‡ āϏ⧋āĻŽāĻŦāĻžāϰāϗ⧁āϞ⧋ āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰ⧇, āĻ•ā§āϞāĻŋāύāĻŋāϕ⧇āϰ āϞ⧋āĻ•āĻžāϞ āϏāĻŽā§Ÿ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇, āϤāĻžāϰāĻĒāϰ āĻĒā§āϰāϤāĻŋāϟāĻŋ occurrence-āϕ⧇ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻŦāϏāϞ⧁āϟ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϟ (timestamptz) āĻ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰ⧇āĨ¤ āϝ⧇āĻšā§‡āϤ⧁ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻĒā§āϰāϤāĻŋāϟāĻŋ occurrence-āĻ āφāϞāĻžāĻĻāĻž āĻ•āϰ⧇ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇, DST āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞ āĻ•āϰāĻž āĻšā§ŸāĨ¤\n\nāĻ­āĻŋāĻ¨ā§āύ āĻ­āĻŋāĻ‰ā§ŸāĻžāϰāϰāĻž āĻāĻ•āχ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻ­āĻŋāĻ¨ā§āύ āϞ⧋āĻ•āĻžāϞ āĻ•ā§āϞāĻ• āϟāĻžāχāĻŽ āĻĻ⧇āĻ–āĻŦ⧇:\n\n- Los Angeles-āĻ āĻĨāĻžāĻ•āĻž āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰāϟāĻŋ āϘ⧜āĻŋāϤ⧇ āĻāϟāĻŋ āφāϗ⧇ āĻĻ⧇āĻ–āĻŦ⧇āĨ¤\n- Berlin-āĻ āĻ­ā§āϰāĻŽāĻŖāϰāϤ āĻ¸ā§āϟāĻžāĻĢ āĻāϟāĻŋ āĻĒāϰ⧇ āĻĻ⧇āĻ–āĻŦ⧇āĨ¤\n\nāĻ•ā§āϞāĻŋāύāĻŋāĻ• āϝāĻž āĻšā§‡ā§Ÿā§‡āĻ›āĻŋāϞ āϏ⧇āϟāĻž āĻŦāϜāĻžā§Ÿ āĻĨāĻžāϕ⧇: āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻŦāĻžāϤāĻŋāϞ āύāĻž āĻ•āϰāĻž āϏ⧋āĻŽāĻŦāĻžāϰ⧇ New York āϟāĻžāχāĻŽā§‡ 09:00 āĻĨ⧇āϕ⧇ 17:00āĨ¤\n\n## āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϧāĻžāĻĒ: āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžā§Ÿāύ, āĻŸā§‡āĻ¸ā§āϟ, āĻāĻŦāĻ‚ āϰāĻ•ā§āώāĻŖāϝ⧋āĻ—ā§āϝāϤāĻž āĻŦāϜāĻžā§Ÿ āϰāĻžāϖ⧁āύ\n\nāφāĻĒāύāĻžāϰ āϟāĻžāχāĻŽ āφāĻĒā§āϰ⧋āϚ āĻĒā§āϰāĻĨāĻŽā§‡ āϤāĻžāϞāĻžāĻŦāĻĻā§āϧ āĻ•āϰ⧁āύ: āφāĻĒāύāĻŋ āϕ⧇āĻŦāϞ āϰ⧁āϞ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻŦ⧇āύ, āϕ⧇āĻŦāϞ occurrence āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻŦ⧇āύ, āύāĻž āĻ•āĻŋ āĻšāĻžāχāĻŦā§āϰāĻŋāĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āύ? āĻ…āύ⧇āĻ• āĻŦ⧁āĻ•āĻŋāĻ‚ āĻ“ āĻļāĻŋāĻĢāϟ āĻĒā§āϰ⧋āĻĄāĻžāĻ•ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻšāĻžāχāĻŦā§āϰāĻŋāĻĄ āĻ­āĻžāϞ⧋: āϰ⧁āϞāϕ⧇ āϏ⧋āĻ°ā§āϏ āĻ…āĻŦ āĻŸā§āϰ⧁āĻĨ āϰāĻžāϖ⧁āύ, āĻĒā§āĻ°ā§Ÿā§‹āϜāύ āĻšāϞ⧇ āϰ⧋āϞāĻŋāĻ‚ āĻ•ā§āϝāĻžāĻļ āϰāĻžāϖ⧁āύ, āĻāĻŦāĻ‚ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ“ āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄāϗ⧁āϞ⧋ āĻŦāĻžāĻ¸ā§āϤāĻŦ āϰ⧋ āĻšāĻŋāϏ⧇āĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧁āύāĨ¤\n\nāφāĻĒāύāĻžāϰ "āϟāĻžāχāĻŽ āĻ•āύāĻŸā§āϰāĻžāĻ•ā§āϟ" āĻāĻ• āϜāĻžā§ŸāĻ—āĻžā§Ÿ āϞāĻŋāϖ⧇ āϰāĻžāϖ⧁āύ: āϕ⧀ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āϟ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ—āĻŖā§āϝ, āϕ⧀ āϞ⧋āĻ•āĻžāϞ āĻ“ā§ŸāĻžāϞ āϟāĻžāχāĻŽ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ—āĻŖā§āϝ, āĻāĻŦāĻ‚ āϕ⧋āύ āĻ•āϞāĻžāĻŽ āϕ⧋āύāϟāĻŋ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ•āϰ⧇ āϝ⧇ āϕ⧋āύ⧋ āĻāĻ• āĻāĻ¨ā§āĻĄāĻĒā§Ÿā§‡āĻ¨ā§āϟ āϞ⧋āĻ•āĻžāϞ āϏāĻŽā§Ÿ āĻĢāĻŋāϰāĻžā§Ÿ āφāϰ āĻ…āĻ¨ā§āϝāϟāĻŋ UTCāĨ¤\n\nāϰāĻŋāĻ•āĻžāϰ⧇āĻ¨ā§āϏ āĻœā§‡āύāĻžāϰ⧇āĻļāύāϕ⧇ āĻāĻ•āϟāĻŋ āĻŽāĻĄāĻŋāωāϞ āϰāĻžāϖ⧁āύ, āĻ›ā§œāĻžāύ⧋ SQL āϟ⧁āĻ•āϰ⧋ āύāĻžāĨ¤ āϝāĻĻāĻŋ āĻ•āĻ–āύ⧋ āφāĻĒāύāĻŋ "āϞ⧋āĻ•āĻžāϞāĻŋ 9:00 AM" āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āχāĻ¨ā§āϟāĻžāϰāĻĒā§āϰ⧇āϟ āĻ•āϰāĻŦ⧇āύ āϤāĻž āĻŦāĻĻāϞāĻžāύ, āϤāĻ–āύ āĻāĻ•āϟāĻŋ āϜāĻžā§ŸāĻ—āĻž āφāĻĒāĻĄā§‡āϟ āĻ•āϰāϞ⧇āχ āĻšāĻŦ⧇āĨ¤\n\nāϝāĻĻāĻŋ āφāĻĒāύāĻŋ āϏāĻŦāĻ•āĻŋāϛ⧁āϕ⧇ āύāĻŋāĻœā§‡ āϕ⧋āĻĄ āύāĻž āĻ•āϰ⧇ āϕ⧋āύ⧋ scheduling āϟ⧁āϞ āĻŦāĻžāύāĻžāĻšā§āϛ⧇āύ, AppMaster (appmaster.io) āĻāχ āϧāϰāύ⧇āϰ āĻ•āĻžāĻœā§‡āϰ āϜāĻ¨ā§āϝ āĻŦāĻžāĻ¸ā§āϤāĻŦāϏāĻŽā§āĻŽāϤāĨ¤ āφāĻĒāύāĻŋ Data Designer-āĻ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻŽāĻĄā§‡āϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύ, āĻŦāĻŋāϜāύ⧇āϏ āĻĒā§āϰāϏ⧇āϏ⧇ āϰāĻŋāĻ•āĻžāϰ⧇āĻ¨ā§āϏ āĻ“ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āϞāϜāĻŋāĻ• āĻŦāĻžāύāĻžāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύ, āĻāĻŦāĻ‚ āϤāĻŦ⧁āĻ“ āĻļ⧇āώ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻœā§‡āύāĻžāϰ⧇āĻŸā§‡āĻĄ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āĻ“ āĻ…ā§āϝāĻžāĻĒ āϕ⧋āĻĄ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύāĨ¤

āĻļ⧁āϰ⧁ āĻ•āϰāĻž āϏāĻšāϜ
āĻ•āĻŋāϛ⧁ āφāĻļā§āϚāĻ°ā§āϝāϜāύāĻ•āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ

āĻŦāĻŋāύāĻžāĻŽā§‚āĻ˛ā§āϝ⧇āϰ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž āϏāĻš āĻ…ā§āϝāĻžāĻĒāĻŽāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύāĨ¤
āφāĻĒāύāĻŋ āϝāĻ–āύ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āĻšāĻŦ⧇āύ āϤāĻ–āύ āφāĻĒāύāĻŋ āϏāĻ āĻŋāĻ• āϏāĻĻāĻ¸ā§āϝāϤāĻž āĻŦ⧇āϛ⧇ āύāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āύ⧎

āĻāĻŦāĻžāϰ āĻļ⧁āϰ⧁ āĻ•āϰāĻž āϝāĻžāĻ•
PostgreSQL-āĻ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤ āϏāĻŽā§ŸāϏ⧂āϚāĻŋ āĻ“ āϟāĻžāχāĻŽāĻœā§‹āύ: āύāĻŽā§āύāĻž | AppMaster