首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用一定范围的时间来选择DataMapper条目?

如何使用一定范围的时间来选择DataMapper条目?
EN

Stack Overflow用户
提问于 2011-06-15 20:03:08
回答 1查看 1.3K关注 0票数 0

我有一个基于DataMapper的SQLite数据库。我将构建模型所依据的数据的时间存储为模型MsrunMsrun.rawtimeproperty :rawtime, DateTime

我需要做的是在筛选器中选择日期/时间范围,然后根据该时间筛选器对DataMapper条目进行排序。如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Msrun.all.size # => 63
matches = Msrun.all( begintime: 2010-11-03T21:33:00-0600, endtime: 2011-04-09T23:59:59-0600 )
matches.size # => 12

由于我的数据库在这个模型和子模型之间有大约500个属性,并且我希望每个月生成大约100个这样的条目,所以我也想要一些非常快的东西。这需要SQL吗?这个是可能的吗?我是不是让这件事变得更难了/有没有一种更简单的方法来配置我的数据来启用这种排序?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-15 20:37:24

我不知道你想做什么?如果要查询在特定起始时间和终止时间之间发生的项目,您可以使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Mrsun.all(:rawtime => start_time..end_time)

这将生成如下所示的SQL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT ... FROM msruns WHERE rawtime > start_time AND rawtime < end_time;

这回答了你的问题吗?

更完整的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
require 'rubygems'
require 'dm-core'
require 'dm-migrations'


# setup the logger
DataMapper::Logger.new($stdout, :debug)

# connect to the DB
DataMapper.setup(:default, 'sqlite3::memory:')

class Msrun
  include DataMapper::Resource

  # properties
  property :id, Serial
  property :rawtime, DateTime

end

DataMapper.finalize.auto_migrate!


10.times do |n|
  Msrun.create(:rawtime => DateTime.new(2011, 1, 1, 0, 0 , n))
end

p Msrun.all(:rawtime => DateTime.parse('2011-1-1T00:00:04+0100')..DateTime.parse('2011-1-1T00:00:07+0100'))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6363630

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文