database - PostgreSQL SELECT LIKE 日期时间

标签 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."%);

但结果是空的,有没有办法在 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/

相关文章:

database - 为任何查询实现 Oracle 分页?

php - Laravel 过滤有很多结果

SQL 主键重复值

mysql - 如何在不丢失 Xampp 数据的情况下将类型从 varchar 更改为 Date

带有 zzz 的 C# DateTime.ToString 在 dotnet 框架中中断,但不在 dotnet 核心中

java - 将 24 小时划分为 30 分钟的时间间隔

mysql - MySQL 的日期维度生成器

json - 将 json 转换为嵌套的 postgres 复合类型

java - YCSB项目安装JDBC驱动

mysql - 使用 SQL LIMIT 和 OFFSET 查询选择所有记录