PostgreSQL:timezone_minute函数参数类型错误及正确用法求助
解决timezone_minute()函数的参数类型报错问题
PostgreSQL的timezone_minute()函数仅接受interval类型参数,你之前传入timestamp/timestamptz类型的参数,自然会报“对应参数类型的函数不存在”的错误。以下是正确的使用方法:
核心思路
先获取代表时区偏移的interval值,再传入timezone_minute()函数。
具体用法
- 从timestamptz类型提取时区偏移interval
如果你的拼接结果是timestamptz类型,可先将其转换为包含时区偏移的interval:
-- 示例:针对拼接后的timestamptz值 select timezone_minute(('2023-01-25' || ' ' || '05:36:48Z')::timestamptz::text::interval);
- 直接计算时区偏移interval
对比两个不同时区的时间,得到时区偏移的interval后传入函数:
select timezone_minute(current_timestamp AT TIME ZONE 'UTC' - current_timestamp);
- 替代方案:使用EXTRACT函数
如果无法调整参数类型,EXTRACT(TIMEZONE_MINUTE FROM ...)支持直接传入timestamptz类型,效果和timezone_minute()一致:
select EXTRACT(TIMEZONE_MINUTE FROM ('2023-01-25' || ' ' || '05:36:48Z')::timestamptz);
内容的提问来源于stack exchange,提问作者Ben Swinburne
相关产品推荐
相关产品推荐

