【问题标题】:Ruby (Sequel): filtering by date (year) and attributeRuby(续集):按日期(年份)和属性过滤
【发布时间】:2012-10-17 04:43:58
【问题描述】:

使用 Sequel,我需要找到所有在 2012 中创建并且标题为 @title 的文档。

$dataset = DB[:documents]
$dataset.select(:title).where(:created_at.extract(:year) => 2012, title: @title).all

但这不会返回任何内容,而是返回两个文档。

【问题讨论】:

    标签: ruby-on-rails ruby database select sequel


    【解决方案1】:

    您没有提及您使用的是什么数据库,但是如果您使用的是SQLite,则需要设置DB.use_timestamp_timezones = false并清理数据库中的所有时间戳以删除时区。 Sequel 默认在 SQLite 上使用时区,但 SQLite 的日期/时间函数无法识别带有时区的时间戳。

    如果您不使用 SQLite,则应提供有关您的情况的更多详细信息。

    【讨论】:

      【解决方案2】:

      我认为您刚刚写了 title: @title 而不是 :title => @title ,并且还要验证 @title 与标题的类型相同

      【讨论】:

      • 目前看起来不错,我会尝试将其切成碎片。在开始时尝试不带 .select() 的命令。如果这不起作用,请尝试删除其中一个条件。例如,仅按年份或仅按标题尝试,看看您的 SELECT 语句中的罪魁祸首是什么。如果您有任何想法,请提出来,我会尽力提供帮助
      • 在 Ruby 1.9 中 title: @title:title => @title 相同。
      猜你喜欢
      • 2015-09-20
      • 2014-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-16
      • 2012-12-14
      • 1970-01-01
      • 2020-06-30
      相关资源
      最近更新 更多