日期字段通配符搜索

Posted

技术标签:

【中文标题】日期字段通配符搜索【英文标题】:Wildcard search on Date fields 【发布时间】:2011-02-26 15:36:22 【问题描述】:

我在当前项目中使用 HSQLDB2.0 和 JPA2.0,并且 DB 中的日期列很少。

我想对日期列运行通配符查询。我怎么能这样做?

例如:如果我的数据库包含两行日期值分别为:10-01-2011 和 15-02-2011

我的搜索条件将是“%10-01%”,那么结果应该是 10-01-2011。

否则,如果搜索条件为“%2011%”,则需要使用 select 查询获取两行。

提前致谢,

萨提亚

【问题讨论】:

【参考方案1】:

您可以定义一个包含日期副本的 VARCHAR 类型的自动生成列。然后,您可以使用 LIKE 谓词和 REGEXP_MATCHES() 函数执行查询。列定义示例如下:

DATEGEN VARCHAR(10) GENERATED ALWAYS AS (CAST(DATECOL AS VARCHAR(10))

请注意,DATE 的字符串表示形式为“2011-02-26”,您的查询字符串应遵循此模式。

【讨论】:

【参考方案2】:

这可以通过这种格式实现:

select date_birth from member where to_char(date_birth,'MM-yyyy') like '%02-2011%'

select date_birth from member where to_char(date_birth,'MM-dd') like '%02-15%'

select date_birth from member where to_char(date_birth,'dd-yyyy') like '%30-2011%'

问候,

萨提亚

【讨论】:

以上是关于日期字段通配符搜索的主要内容,如果未能解决你的问题,请参考以下文章

在 .NET 中使用哪些好的倒排索引库?

Mysql从入门到入魔——4. 通配符计算字段函数

SQL必知必会 -------- 通配符计算字段函数

在 AWK 模式中添加当前日期和时间与通配符匹配

NSPredicate 多字段搜索

Lucene/kibana查询 语法