PostgreSQL:在时间戳字段中选择类似的数据

我正在尝试从表中选择数据,在日期字段“date_checked”(时间戳)上使用“like”。但我有这个错误
sqlSTATE[42883]: Undefined function: 7 ERROR:  operator does not exist: timestamp without time zone

我的要求是:

SELECT my_table.id
FROM my_table
WHERE my_table.date_checker LIKE '2011-01-%'

我不想用:

SELECT my_table.id
FROM my_table
WHERE my_table.date_checker >= '2011-01-01 00:00:00' 
    AND  my_table.date_checker < '2011-02-01 00:00:00'
这一切都非常“不想使用”<和>有时间戳,但这些运算符可以转换为索引扫描,并且字符串匹配……好吧,它可以,但EWWWW。

好吧,发生错误是因为你需要在对它使用字符串操作之前显式地将时间戳转换为字符串,例如:

date_checker::text LIKE '2011-01-%'

我想你可以在(date_checker :: text)上创建一个索引,那个表达式将变成索引扫描,但是…… EWWWW。

相关文章

来源:http://www.postgres.cn/docs/11/ 4.1.1.&#160;标识符和关键词 SQL标识符和关键词必须以一个...
来源:http://www.postgres.cn/docs/11/ 8.1.&#160;数字类型 数字类型由2、4或8字节的整数以及4或8...
来源:http://www.postgres.cn/docs/11/ 5.1.&#160;表基础 SQL并不保证表中行的顺序。当一个表被读...
来源:http://www.postgres.cn/docs/11/ 6.4.&#160;从修改的行中返回数据 有时在修改行的操作过程中...
来源:http://www.postgres.cn/docs/11/ 13.2.1.&#160;读已提交隔离级别 读已提交是PostgreSQL中的...
来源:http://www.postgres.cn/docs/11/ 9.7.&#160;模式匹配 PostgreSQL提供了三种独立的实现模式匹...