当我在“enterprisedb 9.2”上运行这个查询时,它引发了一个错误:
select quote_nullable(to_date('09-02-2014 ','dd-MM-yyyy'))::date;
错误:
LINE 1: select quote_nullable(to_date('09-02-2014 ','dd-MM-yyyy'))::... ^ HINT: Could not choose a best candidate function. You might need to add explicit type casts. ********** Error ********** ERROR: function quote_nullable(timestamp without time zone) is not unique SQL state: 42725 Hint: Could not choose a best candidate function. You might need to add explicit type casts. Character: 8
在 Postgresql 9.1 中,上面的查询运行正常。
请告诉我这里发生了什么。为什么函数quote_nullable(timestamp without time zone)
不唯一?
在我的安装(Postgres 9.3)中按原样工作。
您可能可以通过强制转换为
text
.并且不要将结果转换为
date
.quote_nullable()
如果您尝试将结果转换回.call 将毫无意义date
。NULL 输入也会失败。Postgres 允许函数重载。我的安装有一个
quote_nullable()
taking实例text
和另一个 taking实例anyelement
(多态类型)。后者负责date
.至于
timestamp without time zone
:Postgres 首先寻找完全匹配(date
在您的情况下),然后考虑其他选项,例如可以隐式转换的类型或多态类型。该手册具有函数类型解析的确切过程。不确定 EnterpriseDB。运行这个来诊断:
有关 SO 的相关答案中有关函数重载的更多信息:
错误:函数 addgeometrycolumn 不是唯一的