【问题标题】:PostgreSQL SELECT LIKE datetimePostgreSQL SELECT LIKE 日期时间
【发布时间】:2016-09-15 07:13:36
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否在 psql cli 上运行了此查询?为什么末尾有一个杂散的双引号?为什么在日期字段中没有文本时使用UPPER?为什么在讲psql的时候选择了mysqli这个标签?

标签: database postgresql datetime


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 2010-12-10
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    相关资源
    最近更新 更多