我正在尝试以下方法:
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类型。
答案 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'的内容。