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

PostgreSQL使用LIKE筛选十月出生员工报错:需显式类型转换

问题分析与解决

你的错误出在用字符串匹配操作符LIKE去操作date类型字段。LIKE是专门用来匹配字符串(text/varchar类型)的,而你的birth_day是日期类型,PostgreSQL没有定义日期和字符串之间的LIKE运算规则,所以抛出了operator does not exist: date ~~ unknown的错误。

正确的几种写法:

方法1:用EXTRACT提取月份(推荐)

直接从日期中提取月份进行判断,效率最高,还能利用字段上的索引:

SELECT * 
FROM employee
WHERE EXTRACT(MONTH FROM birth_day) = 10;

方法2:用DATE_PART函数提取月份

和EXTRACT功能类似,写法略有不同:

SELECT * 
FROM employee
WHERE DATE_PART('month', birth_day) = 10;

方法3:转换为字符串后匹配(不推荐)

如果一定要用LIKE,需要先把日期转成字符串格式,但这种写法会导致birth_day字段上的索引无法被使用,数据量大时效率很低:

SELECT * 
FROM employee
WHERE TO_CHAR(birth_day, 'YYYY-MM-DD') LIKE '%-10-%';

内容的提问来源于stack exchange,提问作者Sharat Naik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:06:24