我得到这个错误:如何在PGSQL中按日期搜索?
ActionView :: Template :: Error(PGError:ERROR:运算符不存在:timestamp没有时区~~未知LINE 1:...“articles”WHERE(“articles” “created_at”LIKE'2010 ...
我有一个存档控制器,我可以动态显示文章的类型和年份,月份和日期,无论那些字段在URL中可用。这个指数的行动:
def index
filter_title
@articles = Article.where(:created_at.matches % date_builder, :genre.matches % genre_builder).order("created_at DESC")
respond_to do |format|
format.json { render :json => @articles }
format.xml { render :xml => @articles }
format.html
end
end
这date_builder功能
def date_builder
@date = ""
@date += params[:year] if !(params[:year].nil?)
@date += "-" + params[:month] if !(params[:month].nil?)
@date += "-" + params[:day] if !(params[:day].nil?)
@date += "%"
@date
end
将使用metawhere来查找匹配我提供的字符串部分的日期。这在Sqlite中完美运行。我已将我的应用程序迁移到heroku和PGSQL,并且不允许我这样做。解决办法是什么?谢谢!
@Leon是 - 或'选择 'A',其中date_trunc( '年',LOCALTIMESTAMP)= '2011-01-01';'或'选择 'A',其中TO_CHAR(LOCALTIMESTAMP,“YYYY ')='2011';'如果你更喜欢 – 2011-04-04 17:17:01
所以如果它只是一年做 选择 'A',其中created_at> = '2011-01-01' AND created_at < '2012-01-01' 和年份和月份 选择 'A',其中created_at> =“2011-01- 01'AND created_at <'2011-02-01' 等? – illogikal 2011-04-04 17:27:35
是的。这意味着可以使用'created_at'上的索引,如果转换为字符串,通常情况下不会这样。 – araqnid 2011-04-04 18:23:51