2011-08-01 3 views
2

다음 코드를 사용하여 당월 판매를 찾을 수 있습니다. 내 개발 db는 SQLite지만, PostgreSQL을 사용하는 생산을 위해 Heroku를 사용하고 있습니다. 그래서 strftime 함수가 존재하지 않는 오류가 발생했습니다. 어떻게 번역 할 것이라고, 내 dev에 SQLite 데이터베이스를 쿼리 할 때 여전히 작동하도록 그것을 변환 할 수있는 방법이 있습니까?레일즈 Sqlite 쿼리를 postgresql로 변환하는 방법

sales = current_user.location.sales.find(:all, 
              :conditions => ["strftime('%Y', date) = '?' 
                  AND strftime('%m', date) = ?", 
                  Date.today.year, 
                  Date.today.strftime('%m')], 
                  :order => "date") 
+0

버전? – kain

+2

배포 용 postql과 sqlite를 사용하면 문제가 생길 것입니다. 왜 포스트 그램을 개발하지 않습니까? –

+0

@kain using Rails 3.0 – NicSlim

답변

4

포스트그레스는 strftime을 지원하지 않습니다. 지원되는 날짜/시간 함수 목록 here을 찾을 수 있습니다.

sales = current_user.location.sales.find(:all, 
              :conditions => ["extract(year from date) = '?' 
                  AND extract(month from date) = ?", 
                  Date.today.year, 
                  Date.today.strftime('%m')], 
                  :order => "date") 
+0

감사합니다. 이러한 기능을 사용하는 방법에 대해서는 약간 확실하지 않았습니다. – NicSlim

1

저는 to_timestamp 또는 to_char가 당신이보고 싶은 유사한 Postgres 함수라고 생각합니다. 문서는 꽤 간단합니다. 기본적으로 템플릿 패턴이 다른 strftime과 비슷합니다 : Postgres Datatype Formatting Functions 관심이있는 것 이상일 수도 있지만, Heroku에서 많은 작업을하고 있다면 로컬에서 Postgres를 실행하는 것이 좋습니다. 길 아래에서 고통을 덜어 줄 것입니다.

+0

예. Postgres를 로컬로 실행하기 시작합니다. 그래도 실행하면 문제가됩니다./ – NicSlim

1

이번 달의 판매 수치를 얻으려는 경우, 이는 더 적절한 데이터베이스 불가지론 적 쿼리 일 수 있습니다.

current_user.location.sales.where (: 날짜 => (Time.now.beginning_of_month..Time.now)). 레일의 순서 ("날짜")

+0

Thanks. 이것도 잘 작동하지만 각 판매 열의 합계를 계산하려고 할 때 나와 다른 문제가 발생했습니다. 판매 변수는 비어 있습니다. 나는 postgres 함수로 가서 결국 dev db를 postgres로 바꿨다. – NicSlim

관련 문제