2016-09-15 71 views
1

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

SELECT * FROM MEMBER WHERE UPPER(join_date) LIKE UPPER(%".$input."%); 

但结果是空的,有没有办法在PostgreSQL的正确使用类似语句的日期时间

+1

你是否在psql cli上运行这个查询?为什么最后有一个流浪的双引号?为什么在日期字段中没有文本时使用'UPPER'?为什么你选择标签mysqli时,它是关于psql? – Paul

回答

0

LIKE的字符串,而不是值为DATE。这意味着你必须首先将日期转换为正确格式化字符串值:

SELECT * 
FROM member 
WHERE to_char(join_date, 'YYYY-MM-DD') LIKE '%.... %'; 

使用upper(join_date)是受邪隐式数据类型转换,将无法可靠地工作。

另外:upper()上只有数字的字符串没有任何意义。