RoR - formatowanie róznicy pól postgresql po stronie kodu

Witam.

Mam pewien problem związany z formatowaniem różnic czasu. Mianowicie interesuje mnie różnica między dwoma polami każdej encji w tabeli, którą znajduję tak.

self.synchronization_report_jobs.pluck("min(end_time - start_time) as time")[0]

Niestety wynik zwracany jest w postaci stringa

10 days 08:58:31.836223

Jak to przerobić na jakiś ludzki obiekt, które będzie podlegał tłumaczeniom i formatowaniu. tj będę mógł się pozbyć np. milisekund?

Pozdrawiam.

Spróbuj :
DateTime.parse(twoj_string)

Próbowałem :slight_smile: wywala się między innymi na powyższym stringu.

Klasyk. Dziwne. Mi działa :smile:

DateTime.parse('10 days 08:58:31.836223')

Faktycznie, akurat skopiowałem działający przykład. Ale co gdy różnica jest większa?

"82 days 23:48:14.689785"

Nie przewiduję aż takich rozbieżności czasowych ale nigdy nie wiem jak długo zajmie to userowi. Czy powinienem olać sytuacje i ew. przestać się martwić?

Jeśli chcesz różnicy, to może nie zapisuje tego jako daty, tylko jako jakiś INT?

self.synchronization_report_jobs.pluck("min(end_time - start_time) as time")[0]

to “as time” wyrzuca Ci czas, ale skoro chcesz roznice, to lepiej by wyrzucalo ci inta…

Dokładnie. różnica czasów zwykle formatowana jest w sekundach. DateTime czy Time to jakby inna jednostka [sekundy od]