【发布时间】:2014-12-12 09:42:07
【问题描述】:
我需要在WHERE 子句中包含EXTRACT() 函数,如下所示:
SELECT * FROM my_table WHERE EXTRACT(YEAR FROM date) = '2014';
我收到这样的消息:
pg_catalog.date_part(unknown, text) doesn't exist** SQL State 42883
这里是my_table 内容(gid INTEGER, date DATE):
gid | date
-------+-------------
1 | 2014-12-12
2 | 2014-12-08
3 | 2013-17-15
我必须这样做,因为查询是从网站上的表单发送的,其中包含“年份”字段,用户在该字段中以 4 位数字输入年份。
【问题讨论】:
-
那么问题是什么?它没有按您的预期工作吗?这会产生错误消息吗?
-
我更新了消息。确实有报错信息...
-
这个查询在我的机器上运行良好。您使用的是什么版本的 postgres?
-
PostgreSQL 9.2.2,由 Visual C++ build 1600 编译,32 位
-
字段“日期”的正常索引无助于提高性能。使用相同的 EXTRACT() 定义来创建函数索引或在 WHERE 中使用 BETWEEN 条件而不是 EXTRACT 条件。
标签: postgresql date types where-clause