2014-04-12 1 views
1

나는 발사 날짜를 추적하는 프로젝트 일정 모델을 가지고 있으며 주어진 연도와 일치하는 항목을 계산하기를 원합니다. 이 특정한 경우, 얼마나 많은 프로젝트가 2014 년에 시작될 것인지 알고 싶습니다.레일스에서 ​​주어진 연도와 일치하는 행 수를 얻으려면 어떻게해야합니까?

매우 간단하고 카페인이 아직 타격을 입지 않았다고 생각하지만, 저의 삶을 위해서, 저는 할 수 없습니다. 이 일이 일어나도록하십시오. 매우 감사. 이 같은

뭔가 :

@launch_this_year = Project.where(project.launch_date > 12/31/2014) 

답변

1

다음 코드를 보시기 바랍니다. 문제의

@launch_this_year = Project.where("extract(year from launch_at) = ?", 2014).count 
+1

brilliant! 고맙습니다. 도움을 감사하십시오. 추출물은 날짜와 함께하고 싶은 다른 것들을 위해 편리 할 것입니다. – jakeatwork

0

일부는 날짜 형식의 주위에이다. MM/DD/YYYY 대신 YYYY-MM-DD를 사용하십시오. 또한 '> 2014년 12월 31일 LAUNCH_DATE'의 날짜 당신은 레일 당신이

@launch_this_year = Project.where('launch_date > ?', DateTime.parse('12/31/2013')).count 

을 DateTime.parse

을 사용하는 날짜 형식을 변환 할 수있는 2015 년 날짜가 아닌 다른 방법으로 2014 년

@launch_this_year = Project.where('launch_date > ?', '2013-12-31').count 

을 제안합니다 고려해야 할 또 다른 항목은 위의 쿼리에서 2014 년과 2015 개의 프로젝트가있는 경우 위 쿼리에 둘 다 포함됩니다. 엄격하게 2014 개의 프로젝트가 필요하면 Bachan 솔루션이 작동하거나 날짜 범위 조건을 추가 할 수 있습니다.

@launch_this_year = Project.where(launch_date: DateTime.parse('12/31/2013')..DateTime.parse('1/1/2015')).count 
#=> SELECT COUNT(*) FROM `projects` WHERE (`projects`.`launch_date` BETWEEN '2013-12-31 00:00:00' AND '2015-01-01 00:00:00')