2017-05-15 1 views
0

나는 획기적인 시간을 사용하는 미친 양의 행이 있습니다. id, customerid, orderid, uxtime신기원 별 PostgreSQL 그룹

내 책상에 바로 지금 다른 사람들이 엄청난 양의 행을 신속하게 통과 할 수있게 해주는 관리 페이지를 작성하는 것입니다.

그들은 년과 월을 선택하고 그 달 목록을 얻을 수 있기를 원합니다.

의미 : 4 월 16 일부터 모든 아이디를 반환해야하는 2016 년과 4 월을 선택하십시오.

이것은 멋진 멋진 SQL 문장으로 수행 할 수 있습니다. 그것이 당신이 들어오는 곳입니다. 나는 그것에 대해 연구하고 진전을 보이고 있지만, 여러분 모두가 저보다 훨씬 더 빠름을 확신합니다. :)

+0

** [편집] ** 귀하의 질문에 약간의 샘플 데이터와 해당 데이터를 기반으로 한 예상 출력을 추가하십시오. [** 포맷 된 텍스트 **] (http://stackoverflow.com/help/formatting)하시기 바랍니다. [** 스크린 샷 없음 **] (http://meta.stackoverflow.com/questions/285551/why-may -i-not-upload-images-of-code-on-so-ask-a-question/285557 # 285557). ** 귀하의 질문은 코멘트에 코드 또는 추가 정보를 게시하지 않습니다. –

답변

1

extract(epoch from make_date(2016,4,1)) 

당신은 또한 일반적으로 다음 달의 첫 번째가 될 것입니다 where 절에 대한 상한이 필요 make_date()extract() 유닉스 시대의 사용에 "2016 에이프릴"변환하려면

select ... 
from ... 
where uxtime >= extract(epoch from make_date(2016,4,1)) 
    and uxtime < extract(epoch from make_date(2016,4,1) + interval '1' month); 
,369 :
extract(epoch from make_date(2016,4,1) + interval '1' month) 

그래서 SQL 문은 다음과 같이 될 것이다


가 될 것이다 작성의 약간 짧은 방법 :

select ... 
from ... 
where to_char(to_timestamp(uxtime), 'yyyy-mm') = '2016-04' 

위는 그러나이 될 것입니다 많은 느린가 '에 인덱스를 사용합니다 질수 있기 때문에 최초의 솔루션 uxtime

은 쿼리 속도를 높이기 위해 솔루션을 선호하는 경우 to_char(to_timestamp(uxtime), 'yyyy-mm')에 대한 색인을 생성 할 수 있습니다.