我正在尝试以下操作:
user_calendars.where("extract(day from time_from) = ? ", next_day)
但我不断收到此错误:
PG::InvalidTextRepresentation: ERROR: invalid input syntax for type double precision: "Saturday" LINE 1: ..."user_id" = $1 AND (extract(day from time_from) = 'Saturday'...
不知道为什么它指出类型为 double。
最佳答案
在 PostgreSQL 中,表达式 extract(day from time_from)
返回一个 double 类型的数字,表示一个月中的第几天。 星期六显然不是有效的 double 。
如果您需要 where()
的参数来匹配字符串“Saturday”(匹配星期几),请使用 to_char()
函数.
user_calendars.where("trim(to_char(time_from, 'Day')) = ? ", next_day)
您需要 trim()
,因为这种对 to_char()
的调用会填充到 9 个字符。
对于参数“Day”来说,大小写很重要。如果您将其键入为“day”,则返回值将与“Saturday”不匹配。相反,像 to_char(time_from, 'day')
这样的表达式将返回类似“saturday”的内容。
关于sql - Rails postgres错误: invalid input syntax for type double precision,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27203836/