2011-09-22 2 views
2

저는 작업과 스프레드 시트를 사용하여 Excel 스프레드 시트를 데이터베이스에 읽습니다. 내가 읽는 칼럼 중 하나는 "start_time"입니다. 이를 위해 배열 값을 구성한 다음 각 배열 값을 하나씩 전달합니다.UTC 시간이 2000-01-01 (루비)로 재설정됩니다. 시간을 재설정하지 못하게하려면 어떻게합니까?

cnum_array = [] # for start times 
    sheet1.each 3 do |row| 
    unless row[9].blank? 
     time = Time.parse(row[9]) 
     cnum_array << time.utc 
    end 
    end 

    count = 0 
    for course in Course.all 
    course.update_attribute :start_time, cnum_array[count] 
    count += 1 
    end 

이것은 제대로 작동하는 것 같습니다. 이 마지막 루프 내에 "puts course.start_time"문을 삽입하면 올바른 시간에 인쇄됩니다. 좋아요 :

count = 0 
    for course in Course.all 
    course.update_attribute :start_time, cnum_array[count] 
    puts course.start_time 
    count += 1 
    end 

이렇게하면 적절한 시간이 표시됩니다. "2012-01-23 15:30:00."

하지만 나중에 (예 : 내 콘솔의 Course.find (1) .start_time을 통해) 코스 시간을 조회하면 '2000-01-01 15:20:00'이라고 표시됩니다. 하루 중 시간대는 맞지만 하루는 2000-01-01으로 돌아갑니다.

왜 이런 일이 일어나는 지 알고 있으며 어떻게 해결할 수 있습니까? 감사!

답변

6

Time 클래스를 사용 중입니다. 이 수업은 날짜가 아니라 시간을 다룹니다. 내 생각 엔 데이터베이스 열이 time 유형이기도합니다.

datetime (또는 아마도 timestamp) 열 유형을 사용하는 것이 좋습니다.

+0

예, 열 시간을 datetime으로 변경했습니다. 매우 감사합니다! – jyli7