我正在使用任务和电子表格gem将excel电子表格读入我的数据库。我正在读的其中一个栏目是“start_time”。为此,我正在形成一个值数组,然后逐个传递每个数组值。
cnum_array = [] # for start times
sheet1.each 3 do |row|
unless row[9].blank?
time = Time.parse(row[9])
cnum_array << time.utc
end
end
count = 0
for course in Course.all
course.update_attribute :start_time, cnum_array[count]
count += 1
end
这似乎工作正常。如果我在最后一个循环中插入“puts course.start_time”语句,则会打印出正确的时间。像这样:
count = 0
for course in Course.all
course.update_attribute :start_time, cnum_array[count]
puts course.start_time
count += 1
end
这给了我正确的时间,例如“2012-01-23 15:30:00。”
但是当我稍后查看课程时(例如通过我的控制台的Course.find(1).start_time),它给了我“2000-01-01 15:20:00”。所以一天中的时间是正确的,但这一天本身可以追溯到2000-01-01。
有谁知道为什么会这样,以及我如何解决它?谢谢!
答案 0 :(得分:8)
您正在使用Time
课程。本课程涉及时间,而不是日期。我的猜测是你的数据库列也是time
类型。
我建议您使用datetime
(或可能timestamp
)列类型。