2011-08-25 5 views
1

이 sqlite 쿼리를 포스트그레스 쿼리로 변환 할 수 있습니까? 그래서 우리는 여기에 datetime(...) 물건을 분류하고 타임 스탬프 인 date을 보상해야 elsewheresqlite를 postgres 쿼리로 변환

select count(*), (m.date::date - extract(dow from m.date)::int) as dat 
from emails as m join contacts as me on m.fr = me.id 
where m.date > '2010-08-25' 
    and m.date < '2011-08-25' 
    and me.email like '%gmail.com%' 
group by dat 
order by dat 
+0

potsgres의 날짜 열에 어떤 유형을 사용하고 있습니까? –

+0

실제로 두 개의'count (*)'가 있거나 오타가 있습니까? –

+0

두 개의'count (*)'가있는 것 같습니다. 이유는 확실하지 않습니다. 날짜 유형은 "시간대가있는 시간 소인" – locoboy

답변

1

strftime 사업이 찍은주의 :

SELECT count(*), count(*), date(date, '-'||strftime('%w',date)||' days') as date 
FROM emails as m, contacts as me 
WHERE datetime(date) > datetime('2010-08-25') 
    and datetime(date) < datetime('2011-08-25') 
    and (me.id = m.fr) 
    and me.email like '%gmail.com%' 
GROUP BY date 
ORDER BY date asc 

업데이트는, 내가 대답을 발견했다. 그리고 여기에있는 동안 명시 적 조인 조건 (WHERE 절의 암시 적 조건이 아닌)으로 전환합니다. 당신이 비교를 포맷 어떤 주조 또는 필요가 없습니다

select count(*), count(*), m.date::date - extract(dow from m.date)::int as date 
from emails as m join contacts as me on m.fr = me.id 
where m.date > '2010-08-25' 
    and m.date < '2011-08-25' 
    and me.email like '%gmail.com%' 
group by m.date 
order by m.date asc 

PostgreSQL은 그 자체 ISO8601 날짜 문자열와 타임 스탬프를 비교할 수 있습니다.

두 개의 count(*)은 여전히 ​​나에게 재미있어 보이지만 중복이 의미가있을 수 있도록 쿼리가 사용 된 컨텍스트를 알지 못합니다.

+0

입니다. '날짜 별 그룹화 '를 말할 때 그룹화하지 않고 함께 추가합니다. – locoboy

+0

@ cfarm54 : 샘플 데이터와 스키마가 있습니까? 우리는'date' 컬럼,'date' 함수,'date' 앨리어스를 가지고 있습니다; PostgreSQL과 SQLite는 다양한 상황에서 어떤 의미인지에 대해 다른 선택을 할 수 있습니다. –

+0

'emails'의 스키마가 다음과 같아야합니다 :'(ID 정수 기본 키 autoincrement, fr int는 연락처 (id), subj 텍스트, 날짜 datetime, 중간 텍스트 고유, 응답 텍스트 참조 msgs (중간), multipart bool)를 참조합니다. ' 'contacts'의 스키마는 다음과 같습니다.'(id INTEGER PRIMARY KEY AUTOINCREMENT, name 텍스트, email text not null); '. 나는 또한 '날짜'라는 용어와 혼동을 느낀다. 메소드 호출과 변수 사이에 매우 혼란 스럽습니다 : P. – locoboy