【问题标题】:Compare a DateTime to the current date将 DateTime 与当前日期进行比较
【发布时间】:2010-06-03 20:53:05
【问题描述】:

我试图在 start_at DateTime 等于或大于今天的日期时对事件使用条件。 我想列出即将发生的事件,但如果它们已经过去,显然它们不是即将发生的。

我有:

@appointments = Event.find(:all, :conditions => ['move_id = ? AND start_at = ?', @move.id, Date.today])

我想我可能在这里比较苹果和橘子。它不会抛出错误,只是没有做它应该做的事情。

帮助!提前致谢。

【问题讨论】:

  • 如果它没有做它应该做的,它会做什么?
  • 抱歉解释不佳。它根据关联拉入事件以移动它具有但似乎不承认 start_at 上的条件。它提取日期信息但不进行比较?

标签: ruby-on-rails datetime date


【解决方案1】:

试试:

@appointments = Event.find(:all, :conditions => ['move_id = ? AND start_at >= ?', @move.id, DateTime.now])

奇怪的是我找不到 DateTime#now 文档。

我正在使用 Postgres 进行此测试。

>> Event.last.created_at.class
=> Time
>> Event.find(:first, :conditions => ['created_at >= ?', DateTime.now]).valid?
=> true

迁移域代码

t.datetime "created_at", :null => false

【讨论】:

  • 谢谢,我也确实尝试过,虽然它现在拉出 DateTime,但似乎无法比较两者?
  • start_at 列类型是什么?
  • start_at 列是一个日期时间
【解决方案2】:

正如你所说,start_at 等于或大于今天的日期,也许是操作员在今天的日期检查你的事件的 start_at 的问题

Evento.find(:all, :conditions => ['start_at >= ?', DateTime.now])

如果你使用 mysql,你也可以使用“start_at >= CURRENT_DATETIME”或类似的东西

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-15
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2013-07-20
    相关资源
    最近更新 更多