2013-01-15 1 views
1

나는 다음과 같은 작업을 수행 할 필요가있는 'run_date'라는 날짜 필드가있는 테이블이 다음 ((최신 년을 가지고있는 가치를 얻을포스트 그레스 쿼리

)보다 이전의 ).

Example: 

run_date 
2012-12-24 
2012-12-31 
2013-01-03 
2013-01-07 
2013-01-14 

위의 규칙을 따르므로 '2013-01-03'을 반환하는 쿼리가 필요합니다. 내 최고의 시도는 다음과 같습니다 물론

SELECT 
    run_date as val 
FROM 
    myTable 
    WHERE to_char(run_date, 'MM'::text) = (SELECT MAX(EXTRACT ('MONTH' FROM run_date)) FROM myTable) 
    and to_char(run_date, 'YYYY'::text) = (SELECT MAX(EXTRACT ('YEAR' FROM dado_dt_data_rodada)) FROM myTable) 

    ORDER BY val ASC LIMIT 1 

, 1-12 사이의 달주기, 쿼리 위에서 작동하지 않도록. 감사합니다. 감사합니다.

답변

1

가장 최근 날짜의 가장 빠른 날짜를 원합니다. 이것을 시도하십시오 :

SELECT run_date as val 
FROM myTable 
ORDER BY to_char(run_date, 'YYYY-MM') desc, run_date asc 
LIMIT 1 
+0

나는 그것이 작동한다고 생각합니다! 내가 원한 것은 가장 최근의 월 AND * 중 * 가장 빠른 날짜입니다. 따라서 먼저 DESC를 1 년으로 정렬 한 다음 다시 ASC로 정렬하십시오. – Fernando

+0

@Fernando. . . 네, 이것이 그 일입니다. 'order by'의 첫 번째 부분은 가장 최근의 달을 상단에 놓습니다. 두 번째 부분은 해당 월의 가장 빠른 날짜를 나타냅니다. –

+0

좋아요! 고맙습니다! – Fernando