我的模型中有以下条件适用于mysql。
with_scope :find => { :conditions => "starts_at <= now() AND ends_at >= now()" }
但是我在sqlite3测试数据库上得到错误,因为now()仅针对mysql db。 那个now()函数的db不可知方法是什么?
答案 0 :(得分:5)
CURRENT_TIMESTAMP
是SQL92的标准配置,应该足够跨平台。
答案 1 :(得分:1)
或者您可以使用ruby为您提供当前时间戳而不依赖于数据库。例如
current_ts = Time.now
with_scope :find => { :conditions => ["starts_at <= ? AND ends_at >= ?", current_ts, current_ts] }
我个人更喜欢这个,因为时间戳可以很容易地修改(加减一个小时等),而不必编写可能不适用于所有版本的sql。