rails postgres ERROR:类型为double precision的输入语法无效

时间:2014-11-29 15:26:26

标签: sql ruby-on-rails postgresql

我正在尝试以下方法:

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类型。

1 个答案:

答案 0 :(得分:3)

在PostgreSQL中,表达式extract(day from time_from)返回一个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'的内容。