Ruby 数据映射器日期时间条件
我正在使用一个简单的Sinatra web应用程序和一个DataMapper MySql db。我用属性声明了一个DatamapperRuby 数据映射器日期时间条件,ruby,datetime,sinatra,datamapper,Ruby,Datetime,Sinatra,Datamapper,我正在使用一个简单的Sinatra web应用程序和一个DataMapper MySql db。我用属性声明了一个DatamapperPost类 property :created_at, DateTime (初始化时间为Time.now),现在要获取过去7天内所有帖子的计数。我的疑问 lastweek_posts = Post.count(:created_at.gte => 1.week.ago) lastweek_posts = Post.count(:conditions =&g
Post
类
property :created_at, DateTime
(初始化时间为Time.now
),现在要获取过去7天内所有帖子的计数。我的疑问
lastweek_posts = Post.count(:created_at.gte => 1.week.ago)
lastweek_posts = Post.count(:conditions => ["created_at >= ?", Time.now.utc - 1.week])
但是,所有返回的计数均为0(数据库包含多个条目,其中包含一个在今天创建的_)。正确的查询是什么
非常感谢
更新:
Post.all(:created_at.gte => 1.week.ago).length
返回正确的值,但这是一个不好的选择,因为它将从我的远程sql数据库获取所有帖子。好的,我发现了错误,我只是错过了在我的Sinatra脚本中要求
dm aggregates
,如
我为这件事感到抱歉 好的,我发现了错误,我只是错过了在我的Sinatra脚本中要求
dm aggregates
,如中所述
我为这件事感到抱歉 这两个问题都是正确的,对我来说非常有效。谢谢你的反馈!这很奇怪,这可能是带有datetime/time数据类型转换的mysql适配器的内部问题吗?检查Post.all返回的内容,看看是否可以通过计算ruby端得到相同的结果。它也可能取决于适配器,尝试将列类型更改为Time(映射到TIMESTAMP,这是存储时间的推荐类型)。谢谢,请参阅上面的更新,fetch与ruby计数结合使用会返回正确的值。所以这可能是DataMapper的一个bug?这两个查询都是正确的,对我来说非常有效。谢谢你的反馈!这很奇怪,这可能是带有datetime/time数据类型转换的mysql适配器的内部问题吗?检查Post.all返回的内容,看看是否可以通过计算ruby端得到相同的结果。它也可能取决于适配器,尝试将列类型更改为Time(映射到TIMESTAMP,这是存储时间的推荐类型)。谢谢,请参阅上面的更新,fetch与ruby计数结合使用会返回正确的值。这可能是DataMapper的一个bug?