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

我正在尝试以下方法:

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类型的数字,表示该月的某一天。 星期六显然不是有效的双倍。

如果你需要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’的内容。