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

Mysql 数据库不可知now()datetime函数?,mysql,ruby-on-rails,sqlite,Mysql,Ruby On Rails,Sqlite,在我的一个适用于mysql的模型中,我有以下条件 with_scope :find => { :conditions => "starts_at <= now() AND ends_at >= now()" } 带有_scope:find=>{:conditions=>“启动_at=now()”} 但是我在sqlite3测试数据库上得到了错误,因为now()只针对mysql数据库。 对于now()函数来说,什么是db不可知的方法?当前时间戳是SQL92中的标准,并且应

在我的一个适用于mysql的模型中,我有以下条件

with_scope :find => { :conditions => "starts_at <= now() AND ends_at >= now()" }
带有_scope:find=>{:conditions=>“启动_at=now()”}
但是我在sqlite3测试数据库上得到了错误,因为now()只针对mysql数据库。
对于now()函数来说,什么是db不可知的方法?

当前时间戳是SQL92中的标准,并且应该具有足够的跨平台性。

或者您可以使用ruby提供当前时间戳,而不依赖于数据库。例如

current_ts = Time.now
with_scope :find => { :conditions => ["starts_at <= ? AND ends_at >= ?", current_ts, current_ts] }
current\u ts=Time.now
使用范围:find=>{:conditions=>[“开始于=?”,当前,当前]}

我个人更喜欢这样,因为时间戳可以很容易地修改(加上或减去一个小时等),而不必编写sql,因为sql可能无法在所有版本中运行。

我编辑了你的帖子:两件事:1)不需要分区,它会自动转换为UTC,除非你有意将其设置为非2)不需要(:db)它,这也是自动完成的。