我正在尝试从表中选择数据,在日期字段“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。