计算经过时间并保存到数据库

时间:2019-07-11 13:18:07

标签: ruby-on-rails ruby ruby-on-rails-5

我正在尝试登录Ruby应用程序数据库表(MySQL数据库),导入脚本启动,完成的时间和日期以及该脚本执行所需的时间。

开始时间和结束时间的日志记录非常简单,我已经可以正常工作了,但是,我无法获取它来将运行时保存在表中,只是跳过了该字段。

这是迁移文件中的表结构

create_table :import_alls do |t|
  t.datetime :Import_Start_Time
  t.datetime :Import_Finish_Time
  t.time :Import_Duration


  t.timestamps
end

这是我的代码...

@script_start_time = Time.now
[... Script ...]
@script_finish_time = Time.now
@script_runtime = @script_finish_time - @script_start_time

import = ImportAll.new
    import.Import_Start_Time = @script_start_time # Saves correctly
    import.Import_Finish_Time = @script_finish_time # Saves Correctly
    import.Import_Duration = @script_runtime # Skips
    [... a few other fields to save ...] # All save correctly
import.save!

puts @script_runtime # Puts correct number of seconds as a line in the server log

保存的结果:

Import_Start_Time = Start Date & Time as expected
Import_Finish_Time = Finish Date & Time as expected
Import_Duration = NULL (expected duration expressed as HH:MM:SS)

所以

  1. time字段是否为if类型的正确类型?还是应该为datetime

  2. 如何将@script_runtime值转换为time字段,以便可以将其保存在表中?

1 个答案:

答案 0 :(得分:1)

可能是某些数据类型转换问题:

2.6.3 :018 > t = Time.new(12.023267542)
=> 0012-01-01 00:00:00 +0053 

我将使用time列而不是integer来存储持续时间。