在我的Go代码中,我有这行代码:
rows, err := conn.Query(`
SELECT id, name, lang, deleted_at, read
FROM categories
WHERE deleted_at < NOW()
`)
当我运行它时,我从PostgreSQL收到错误:
pq: function now() does not exist
(pq是我使用的Go驱动程序)
使用CURRENT_TIMESTAMP
也会引发错误。它表示列current_timestamp
不存在。直接在NOW()
(命令行)中使用psql
不会引发错误,一切正常。
在我的Go应用程序发送查询时,我不知道为什么我不能使用NOW()
或CURRENT_TIMESTAMP
?
答案 0 :(得分:1)
我键盘上的右键alt卡在没有注意的情况下卡住了。这使我在按空格键时插入不可破坏的空格。 PostgreSQL可能将不可破坏空间解释为属性函数的一部分。
插入常规空格代替了解决问题。
答案 1 :(得分:0)
据我所知,您的查询没有任何问题。当函数实际存在但期望不同的值类型时,PostgreSQL也可以抛出未找到的函数。
函数now()返回timestamp with time zone。如果列deleted_at的类型不同,则可能需要转换deleted_at或now()的输出。