2011-03-16 5 views
0

postgrSQL을 사용하여 특정 요일의 타임 스탬프를 찾으려고합니다. 예를 들어 now()를 사용하여 현재 시간을 가져올 수 있지만 가장 최근의 월요일 또는 일요일과 같은 유형의 데이터를 반환하고자합니다.요일의 타임 스탬프 가져 오기

지금과 몇 달 전에 데이터를 검색하는 쿼리가 있고 현재 주를 포함하고 싶지 않기 때문에이를 찾고 있습니다. 지금 무엇을 예를 들어 :

creation_date > now() - INTERVAL '2 month' 

나는 이것이 나의 목표를 달성 할 수 생각 :

BETWEEN now() - INTERVAL '4 month' AND now() - INTERVAL '1 week' 

그러나 그것은 단지 내가 원하는 것이 아니다 쿼리에서 칠일 뺍니다. 기본적으로, 내가 원하는 :

물음표가 가장 최근의 일요일 타임 스탬프입니다
BETWEEN now() - INTERVAL '4 month' AND ???? 

, 적어도 나는 그 일을 할 생각합니다.

+0

'SELECT * FROM TABLE WHERE CREATION_DATE> (두 번에서 ADD_MONTHS (SYSDATE, -3) 선택) 및 CREATION_DATE (두 번에서 ADD_WEEKS (SYSDATE, -1)를 선택하십시오.) –

답변

2

date_trunc('week', current_date) - interval '1' day

date_trunc('week', current_date)은 일주일의 시작 날짜를 반환합니다.

요일은 항상 Postgres에서 월요일입니다. 그래서 일요일을 얻기 위해 다른 날을 결과에서 빼내야합니다.

+0

+1 , 나는 항상'date_trunc'에 대해 잊어 버린다. – Anomie

+0

감사합니다.'date_trunc'가 작동 할 것이라는 것을 정말로 깨달았어야했습니다. 또한 월요일이 월요일의 시작임을 상기시켜 주신 것에 감사 드리며, 저는 항상 잊어 버리고 결국 시간을 낭비하게됩니다. – Yottagray

1

EXTRACT(DOW FROM date)을 사용하여 현재 요일 (0-6, 일요일 0)을 추출 할 수 있습니다. 그런 다음이를 사용하여 특정 요일에 도달하기 위해 더하거나 뺄 간격을 만들 수 있습니다. 예를 들어, 가장 최근의 일요일은 now() - (EXTRACT(DOW FROM now()) || ' days')::interval입니다.