【问题标题】:Finding Records From This Month Datamapper with Sinatra使用 Sinatra 查找本月 Datamapper 的记录
【发布时间】:2012-11-29 21:31:29
【问题描述】:

我目前正在构建一个小型 Sinatra Web 应用,但在理解使用 DataMapper 的查询时遇到问题。

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

我试过了:

查询 = “2012-11”

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

这似乎不起作用,我希望有人能发现我的错误并给我一些指导!希望有人能提供帮助,感谢您花时间阅读。

戴夫

【问题讨论】:

    标签: ruby sinatra datamapper


    【解决方案1】:

    改为提供一个范围:

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

    我还会修正您的日期格式并提供月、日和年。

    【讨论】:

    • 这会带回特定月份的所有记录吗?我希望我可以使用某种通配符,如 2012-11-* 来返回所有条目。我不确定如何自动找到给定月份的开始日期和结束日期,所以我希望使用通配符来解决它?
    • 您需要一个日期范围来进行日期查询。如果需要,请参阅 stackoverflow.com/questions/9862123/… 了解如何计算日期。
    • 谢谢老兄,真的很有帮助!
    【解决方案2】:

    你可以试试这个:

    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
    

    这将返回当前月份的条目

    【讨论】:

    • 感谢您抽出宝贵时间回复!有关如何根据当前日期自动计算这些字段的任何提示?
    猜你喜欢
    • 2011-01-18
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多