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
운영게시판
최근게시물
Oracle Q&A 40702 게시물 읽기
No. 40702
DB로 날짜 검색
작성자
조성찬(qwertysap)
작성일
2015-01-30 16:00
조회수
8,295

 예를들어 2015년3월달은 첫번째 요일이 몇일인지? 또 무슨요일인지?

DB상에서 이런 검색 구현도 가능한가요??

이 글에 대한 댓글이 총 3건 있습니다.
최성준(junkk)님이 2015-01-30 16:22에 작성한 댓글입니다.

 to_char(날짜,'d') 해서 결과가 '1' 이면 일요일 ~ '7' 이면 토요일 이구요

 

만약 특정월의 첫번째 일요일이 몇일인지 알려면 다음과 같은 식으로 알 수 있어요

 

 
select
    a.dt
    ,case when to_char(trunc(a.dt,'d')+a.요일인덱스,'yyyymm') != to_char(a.dt,'yyyymm') then
        trunc(a.dt,'d')+a.요일인덱스 + 7
    else 
        trunc(a.dt,'d') + a.요일인덱스
    end 첫요일
from
    (
        select
            add_months(to_date('19700101','yyyymmdd') ,level - 1 ) dt
            , 0 요일인덱스  /*0 : 일요일 , 1 : 월요일 ... 6 : 토요일*/
        from    dual 
        connect by add_months(to_date('19700101','yyyymmdd') ,level - 1 ) <= to_date('20151201','yyyymmdd')
    ) a
/
 
 
여기서는 1970년1월 부터 2015년 12월 까지 매월 첫 일요일이 몇일인지를 알려줍니다.
만약 월요일이 궁금하면 요일인덱스를 1로 하면 됩니다.
원리는 trunc(날짜,'d') 하면 그 날짜보다 작거나 같은 일요일이 리턴되는 것을 이용한 것입니다.
만약 trunc(그달1일,'d') 한 것이 전월이면 7만큼 더합니다.
 
김흥수(protokhs)님이 2015-01-30 16:40에 작성한 댓글입니다.

 와...두분모두 감사드립니다 잘해결됬어요~~!!!

조성찬(qwertysap)님이 2015-01-30 17:02에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40705소수점 데이터가 있는지 확인 하는 방법 [3]
나루토21
2015-02-02
9835
407047일 연속 로그인한 고객데이터 뽑는 쿼리 부탁 드립니다. [2]
사바직자
2015-02-02
8094
40703DB 날짜 등록하기 [1]
조성찬
2015-02-02
7242
40702DB로 날짜 검색 [3]
조성찬
2015-01-30
8295
40701oracle로 1차 연립방정식 풀기 [2]
김흥수
2015-01-30
8658
40700ID중복검사..를 하고싶은데요. 지적부탁드립니다. [2]
newbie
2015-01-30
7822
40699조건부 count 쿼리 도와주세요 [2]
박용대
2015-01-29
7015
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.047초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다