Миллисекундное разрешение DateTime в Ruby
У меня есть строка как2012-01-01T01:02:03.456
что я храню в базе данных Postgres TIMESTAMP с помощью ActiveRecord.
К сожалению, Ruby, похоже, отрубает миллисекунды:
ruby-1.9.3-rc1 :078 > '2012-12-31T01:01:01.232323+3'.to_datetime
=> Mon, 31 Dec 2012 01:01:01 +0300
Postgrs поддерживает микросекундное разрешение. Как я могу соответственно сохранить свою метку? Мне нужно хотя бы разрешение в миллисекундах.
(PS Да, я мог бы взломать столбец с целочисленными значениями в миллисекундах в postgres; такой вид побеждает всю цель ActiveRecord.)
ОБНОВИТЬ:
Очень полезные ответы показали, что РубиDateTime
являетсяне отрубать миллисекунды; с помощью#to_f
показывает это. Но, делая:
m.happened_at = '2012-01-01T00:00:00.32323'.to_datetime
m.save!
m.reload
m.happened_at.to_f
Удаляет миллисекунды.
Теперь интересно то, чтоcreated_at
показывает миллисекунды, как в Rails, так и в Postgres. Но другие поля отметок времени (например,happened_at
выше) нет. (Возможно, Rails используетNOW()
функция дляcreated_at
в отличие от передачи в DateTime).
Что приводит к моему последнему вопросу:
Как я могу получить ActiveRecord для сохранения разрешения в миллисекундах в полях меток времени?