레일에 밀리 초 단위로 시간을 저장,하지만 난 DB에서 레코드 검색 할 때 값을 올려요됩니다 : 저장하기 전에나는 레일에서 밀리 초 정밀도와 타임 스탬프를 저장하기 위해 노력하고있어
record.time_stamp = Time.utc(2017,1,1,1,1,1.35)
확인 시간 :
record.time_stamp.strftime('%H:%M:%S.%L')
=> "01:01:01.350"
record.time_stamp.usec
=> 350000
record.time_stamp.to_f
=> 1483232461.35
저장 및 재 장전 :
record.save!
record.reload
확인 시간 저장 한 후 :
record.time_stamp.strftime('%H:%M:%S.%L')
=> "01:01:01.006"
record.time_stamp.usec
=> 6108
record.time_stamp.to_f
=> 1483232461.0061078
record.read_attribute_before_type_cast("time_stamp") // Read raw value before type casting
=> "2017-01-01 01:01:01.35"
여기 무슨 일인지 잘 모르겠습니다. DB에 저장된 밀리 초 값은 정확하며, 타입 캐스팅 이전의 원시 값 (마지막 라인 참조)과 마찬가지로 Ruby Time으로 다시 캐스트 할 때 실수입니다.
주의 사항 : - 그 요인이 될해서는 안 난 그냥 (밀리 초)을 저장하기 위해 노력하고있어하지만
- 나는 Ruby Time is precise to nanoseconds, while the DB is only precise to microseconds 것을 알고 있습니다.
- 시간대 문제가 아닙니다.
(사양 : 레일/액티브 4.2.6, 루비 2.3.0, 포스트 그레스 9.5.0, OSX)
UPDATE :
난 그냥이 문제를 재현 시도 현재의 앱과 동일한 레일/루비/포스트 그레스 버전을 가진 새로운 레일 앱으로 할 수 없었습니다! 그리고 다른 사람들도 재현 할 수 없기 때문에 이것은 내 앱에 명확하게 특정한 것임을 의미하며,이 문제를 일으키는 원인을 파악하기 위해 더 파고들 필요가 있습니다 ... 자세한 정보가있을 때 업데이트됩니다.
이것은 시간대 일 수 있습니다. UTC 타임 스탬프와 비교하여 얻은 가치를 확인 했습니까? 시간을'UTC'로 저장하고'GMT '를 검색 할 수 있습니까? – Cyzanfar
@Cyzanfar - UTC의 업데이트를 참조하십시오. (어쨌든, 시간대 차이는 초/밀리 초에 영향을 미치지 않겠습니까?) – Yarin
맞아요. 영향을 미치지 않아야합니다. 내 연구를 좀 해봅시다. 해결책을 찾으면 언제든지 알려주십시오. 흥미로운 문제입니다. – Cyzanfar