日期字段通配符搜索
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%'
问候,
萨提亚
【讨论】:
以上是关于日期字段通配符搜索的主要内容,如果未能解决你的问题,请参考以下文章