PostgreSQL SELECT LIKE 日期时间

Idh*_*dry 4 database postgresql datetime

我有一个输入来搜索要显示的日期,输入可以是日期格式(yyyy 或 yyyy-mm 或 yyyy-mm-dd),例如“2006”或“2017-01”或“2008-10-10” ,我使用这样的查询

SELECT * FROM MEMBER WHERE UPPER(join_date) LIKE UPPER(%".$input."%);
Run Code Online (Sandbox Code Playgroud)

但结果是空的,有没有办法在postgresql中正确使用like语句来表示日期时间

小智 6

LIKE适用于字符串,不适用于DATE值。这意味着您必须首先将日期转换为格式正确的字符串值:

SELECT * 
FROM member
WHERE to_char(join_date, 'YYYY-MM-DD') LIKE '%.... %';
Run Code Online (Sandbox Code Playgroud)

使用upper(join_date)会受到邪恶的隐式数据类型转换的影响,并且无法可靠地工作。

另外:upper()在只有数字的字符串上并没有真正的意义。