数据库不可知now()datetime函数?

时间:2009-11-08 07:31:51

标签: mysql ruby-on-rails sqlite

我的模型中有以下条件适用于mysql。

with_scope :find => { :conditions => "starts_at <= now() AND ends_at >= now()" }

但是我在sqlite3测试数据库上得到错误,因为now()仅针对mysql db。 那个now()函数的db不可知方法是什么?

2 个答案:

答案 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。