You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在CASE WHEN表达式中使用CAST:解决interval与integer比较报错问题

解决PostgreSQL中Interval与整数比较的类型不匹配问题

你遇到的报错是因为interval类型和integer类型无法直接比较,需要统一两者的类型,以下两种方法均可解决:

方法1:将Interval转换为总分钟数(整数/浮点数)

使用EXTRACT(EPOCH FROM ...)函数把时间差转换为总秒数,再除以60得到总分钟数,之后就能和整数类型的分钟数比较:

SELECT 
  CASE 
      WHEN EXTRACT(EPOCH FROM (t1.date_closed - t1.created_date)) / 60 < t3.estimated_solution_time_minutes  
      THEN 'не в SL'
      ELSE 'в SL'
  END AS result

如果需要忽略秒数、只取整分钟数,可以用FLOOR()或ROUND()函数处理:

SELECT 
  CASE 
      WHEN FLOOR(EXTRACT(EPOCH FROM (t1.date_closed - t1.created_date)) / 60) < t3.estimated_solution_time_minutes  
      THEN 'не в SL'
      ELSE 'в SL'
  END AS result

方法2:将整数分钟数转换为Interval

把整数类型的分钟数拼接成时间字符串,再转换为interval类型,这样就能和原时间差的interval直接比较:

SELECT 
  CASE 
      WHEN (t1.date_closed - t1.created_date) < (t3.estimated_solution_time_minutes || ' minutes')::interval  
      THEN 'не в SL'
      ELSE 'в SL'
  END AS result

两种方法都能解决类型不匹配的报错,可根据实际业务需求选择。

内容的提问来源于stack exchange,提问作者Nigar Hesenli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 01:17:14