database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 7022 게시물 읽기
No. 7022
오늘날짜랑 비교해서 전후 가장 가까운 날짜 뽑기
작성자
초보
작성일
2007-01-25 15:21
조회수
10,858

수고하십니다


검색을 해보아도 좀처럼 나오지 않아서..


우선 DB에는 예정일(re_date)라는 date타입의(1980-01-01)의 데이타가 들어있습니다


그날짜와 오늘 날짜를(당일) 비교해서 전,후 가까운 날짜만 10건을 뽑고싶은대요...


단순히 쿼리로 가능할런지..알고싶습니다...


전부 데이타를 가져와서 php에서 돌려가면서 10건을 뽑으면...의미가 없을것 같은대..


쿼리로 가능할지....


ex)

re_date


2007-01-26

2007-01-30

2007-09-01

2007-12-01

2006-12-30


이렇게 데이타가 있을경우 3건만 뽑은다면 오늘날짜는 2007-01-25

2007-01-26

2007-01-30

2006-12-30


이런 결과가 나오게 하고 싶은대요...



쿼리대 가능한지 알고싶습니다....프로시저는 무리인듯하고...


이 글에 대한 댓글이 총 2건 있습니다.

대략 이런 식으로 하면 되지 않을까요!


select 

re_date, 

abs(re_date - date('비교일자')) as date_sub

from 테이블명 

order by date_sub 

limit 10;


이상길님이 2007-01-25 16:14에 작성한 댓글입니다. Edit

날짜 연산에는 interval 형이라는 것이 있습니다. 
좀 영어적인 표현을 쓰는 것이 좀 거시기하지만, PostgreSQL 에서는 
날짜 연산을 할 때 꽤나 유용하게 쓰입니다. 

select now() - '1 day'::interval  -> 하루전 timestamp 값
select (now() - '1 day'::interval)::date  -> 하루전 date 값
하루 뒤라면, 그 반대가 되겠죠?

select now() + '1 year'::interval -> 오늘부터 1년 뒤
select now() + '3 month'::interval -> 오늘부터 석달 뒤 : 이놈이 참 편하게 쓰입니다.

이기서 now() 대신에 기준이 되는 date형 값이나, timestamp형 값을 넣으면, 
특정 날짜기준의 해당 interval 연산을 한 값이 나오겠죠.

그렇다면, 오늘 기준 앞뒤 10이라면, 

select ..... 
where re_date >= (now() - '10 day'::interval)::date 
and re_date <= (now() + '10 day'::interval)::date

이런식으로 쿼리를 만드는 것이 일반적입니다.

여기에는 함정이 있는게, re_date 값으로 만일 index를 만들어둔 상태라면, 
그리고 그것이 사용되어야만 할 상황이라면
좀 더 고민을 해야할 것이 있습니다.

이문제는 직접 풀어가세요. 숙제!

김상기(ioseph)님이 2007-01-28 23:20에 작성한 댓글입니다.
이 댓글은 2007-01-28 23:22에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
7025테이블 생성시 자동으로 생성되는 컬럼들.. [2]
tyro
2007-01-28
5086
7024pg_dumpall 후 에러가 났습니다. 도와 주세요. [1]
정구윤
2007-01-27
4478
7023XP에 PostgreSQL 설치시 에러 [1]
김수헌
2007-01-25
4390
7022오늘날짜랑 비교해서 전후 가장 가까운 날짜 뽑기 [2]
초보
2007-01-25
10858
7021csv 파일에 있는 데이터를 그대로 복사 하고 싶습니다. [1]
백창현
2007-01-24
4429
7020pg_dump -E 실행결과 [1]
eh
2007-01-24
4766
7019DB의 Schemas 수 증가? [1]
이기자
2007-01-24
3845
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다