我有一个输入来搜索要显示的日期,输入可以是日期格式(yyyy 或 yyyy-mm 或 yyyy-mm-dd),例如“2006”或“2017-01”或“2008-10” -10',我使用这样的查询
SELECT * FROM MEMBER WHERE UPPER(join_date) LIKE UPPER(%".$input."%);
但结果是空的,有没有办法在 postgresql 中正确使用 like 语句作为 datetime
最佳答案
LIKE
适用于字符串,不适用于 DATE
值。这意味着您必须首先将日期转换为格式正确的字符串值:
SELECT *
FROM member
WHERE to_char(join_date, 'YYYY-MM-DD') LIKE '%.... %';
使用 upper(join_date)
会受到邪恶的隐式数据类型转换的影响,并且无法可靠地工作。
另外:upper()
只包含数字的字符串没有意义。
关于database - PostgreSQL SELECT LIKE 日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39505042/