Расчет истекшего времени и сохранение в базе данных - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь войти в таблицу БД приложения 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 Ответ

1 голос
/ 11 июля 2019

Может быть проблема с преобразованием типов данных:

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

Вместо time я бы использовал столбец integer для хранения продолжительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...