我正在尝试以下操作:
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”,则返回值将与“Saturday”不匹配。相反,像
to_char(time_from, 'day')
这样的表达式将返回类似“saturday”的内容。