Supabase Cron Job日期字段递增操作失效问题求助
Supabase Cron Job日期字段更新失败问题排查
问题背景
已创建两个Supabase Cron Job:
第一个任务运行正常:
SELECT cron.schedule('Every minute testcron','*/1 * * * *', $$UPDATE testcron SET number = number + 1 $$)每分钟执行,将
testcron表的number(整数类型)字段加1。第二个任务未生效:
SELECT cron.schedule('Every minute','*/1 * * * *', $$UPDATE testcronwithdate SET Date = Date + interval '1 day'$$)预期每分钟执行,将
testcronwithdate表的Date(date类型)字段加1天,但日期未更新。
已确认两个任务均存在(通过select * from cron.job;查询),且未启用RLS。
问题原因
PostgreSQL中,date类型与interval相加的结果是timestamp类型,直接将timestamp值赋值给date字段时,会因类型不匹配导致更新语句静默执行失败,Cron Job默认不会主动抛出这类错误提示。
解决方案
方案1:使用date类型原生加法逻辑
PostgreSQL支持直接给date类型字段加整数表示天数,修改任务语句为:
SELECT cron.schedule('Every minute','*/1 * * * *', $$UPDATE testcronwithdate SET Date = Date + 1 $$)
方案2:显式转换结果类型
如果需要保留interval写法,需将计算结果显式转换为date类型:
SELECT cron.schedule('Every minute','*/1 * * * *', $$UPDATE testcronwithdate SET Date = (Date + interval '1 day')::date $$)
验证任务执行状态
执行以下语句查看任务执行日志,确认是否存在其他报错:
SELECT * FROM cron.job_run_details WHERE jobname = 'Every minute' ORDER BY start_time DESC;
内容的提问来源于stack exchange,提问作者orgee
相关产品推荐
相关产品推荐

