加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

mysql-为什么ActiveRecord天生的SQL的Time列包括Date?

发布时间:2021-01-19 18:54:25 所属栏目:编程 来源:网络整理
导读:当我建设一个SQL Time列时,我获得了一个纯时刻,即.未注嫡期的.可是当我行使Ruby Time类时,我也会获得一个日期.题目是何时“查找”天生的SQL包括日期,而我好像获得了稀疏的功效. 桌子 start_date: timeend_time: timeday_of_week: string 勾当记录 def self

当我建设一个SQL Time列时,我获得了一个纯时刻,即.未注嫡期的.可是当我行使Ruby Time类时,我也会获得一个日期.题目是何时“查找”天生的SQL包括日期,而我好像获得了稀疏的功效.

桌子

start_date: time
end_time: time
day_of_week: string

勾当记录

def self.now_playing
    self.find(:first,:conditions => ['day_of_week = ? AND end_time > ? AND start_time < ?',Time.now.strftime('%A'),Time.now,Time.now])
end

SQL

SELECT * FROM `schedules` WHERE (day_of_week = 'Saturday' AND end_time > '2009-06-20 10:19:59' AND start_time < '2009-06-20 10:19:59') LIMIT 1

天生的SQL包括一个日期,这也许就是为什么我获得稀疏功效的缘故起因,譬喻在给按时刻偶然刻表时没有记录返回的缘故起因吗?可是,假如该列是纯时刻列,MySQL应该不忽略日期部门吗? 最佳谜底 Ruby中的时刻更像是时刻戳记……老是有一个日期. ActiveSupport对此具有内置的转换,因此,假如日期不正确,您可以行使#to_s(:format)得到所需的功效.默认环境下,有一个:time选项,但它仅返回小时/分钟(%H:%M),假如还必要几秒钟,则必需添加另一种名目…

建设一个名为time_formats.rb的初始化措施或添加以下内容:

Rails 2ish

ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS.merge!({
  :time_long => "%H:%M:%S"
})

导轨3

Time::DATE_FORMATS.merge!(
  :time_long => "%H:%M:%S"
)

然后在您的取景器中,就像这样:

def self.now_playing
  time = Time.now
  self.find(:first,time.strftime('%A'),time.to_s(:time_long),time.to_s(:time_long)])
end

可以在这里找到更多信息:http://jasonseifer.com/2010/03/10/rails-date-formats

或这里:http://brian.rarevisions.net/extending-date-formats-in-rails-3

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读