2012-11-29 47 views
0

我正在构建一个Sinatra Web应用程序,并且在理解DataMapper查询时遇到问题。从本月查找记录Datamapper与Sinatra

我在我的数据库中有一个字段,我称之为日期,我很想查询这个,只返回当前月份的记录。

我试图这样:

查询= “2012-11”

@trips = Trip.all(:date.like => '%查询%')

这似乎不工作,我希望有人可能会发现我的错误,并给我一些指导!希望有人能帮忙,感谢您花时间阅读。

戴夫

回答

0

提供一个范围,而不是:

@trips = Trip.all(:date => (query..query)) 

我也想解决您的日期格式,并提供月,日和年。

+0

这是否会带回从特定月份的所有记录?我希望我可以像2012-11- *一样使用某种通配符来返回所有条目。我不确定如何自动查找给定月份的开始日期和结束日期,所以我希望能够使用通配符来解决它。 – calabi

+1

您需要日期查询的日期范围。如果需要,请参阅http://stackoverflow.com/questions/9862123/how-to-find-records-by-month-datamapper以了解如何计算日期。 – jboursiquot

+0

谢谢兄弟,真的很有帮助! – calabi

0

你可以试试这个:

require 'date' 

date_c = Date.today 
next_y, next_m = date_c.month == 12 ? 
    [date_c.year+1, 1] : [date_c.year, date_c.month+1] 
date_a = Date.new(date_c.year, date_c.month) 
date_z = Date.new(next_y, next_m) 

Trip.all :date => date_a..date_z 

这将返回当月项

+0

感谢您花时间回复!有关如何根据当前日期自动计算这些字段的任何提示? – calabi

+0

查看更新的答案 – 2012-11-30 11:22:39