2011-07-28 4 views
4

내가하려고하는 것 this : 하이 차트에 대한 날짜 배열에 하루의 총 판매를 매핑합니다 (예, 프로젝트는 실제로 railscast 예제와 정확하게 동일합니다).Rails & Sqlite 질문 - 날짜를 db 타임 스탬프와 비교

불행히도 많은 0으로 끝납니다. 내 모델의 조각은 다음과 같습니다.

def self.total_revenue_on(date) 
    where("date(created_at) = ?", date).sum(:amt) 
end 

은 데이터베이스에 쓰여진 날짜와 일치하지 않습니다. "2011-07-21 09 : 22 : 28.388944 + 0000". 그것이 데이터베이스에서 수동으로 시간대 조각을 제거하면 ("+0000"을 없애고 "2011-07-21 09 : 22 : 28.388944"로 남겨두면) 그것이 제대로 작동하는 것이 확실합니다.

나는 이것이 정말로 레일스/sqlite 질문이라고 생각한다 : 부적절하게 타임 스탬프를 저장하고 있는가, 아니면 부적절하게 비교 하는가? 어떤 도움이라도 대단히 감사합니다! 아직 완전하게 원래의 문제로 당황

def self.total_revenue_on(date) 
    where("datetime >= ? and datetime < ?", date, date + 1.day).sum(:amt) 
end 

을, 그러나 이것은 작동하는 것 같군 :

답변

4

레일스의 데이터베이스에서 datetimes를 참조 할 때 to_s (: db)를 사용하는 것이 가장 좋습니다. 시도해보기 :

def self.total_revenue_on(date) 
    where("date(created_at) = ?", date.to_s(:db)).sum(:amt) 
end 
+0

나는 정말 대단합니다. 정말 고마워요! – tekunokurato

1

OK, 나는 다른 조회 방법을 사용하여이 문제를 해결 할 수 있었다.