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
운영게시판
최근게시물
MS-SQL Q&A 6916 게시물 읽기
No. 6916
주차에 관련하여 질문있습니다.
작성자
MSSQL
작성일
2015-07-08 16:41
조회수
5,832

 궁금한 점이 있습니다.

오라클이든 MSSQL이든 상관없는데

20150701       A             <-27주차

20150702       B             <-27주차

20150705       C             <- 28주차

20150714       D             <-29주차

주차를 입력받아서 그 주차에 포함되는 날짜의 데이터를 조회하고 싶은데 어떤식으로 해야할지 부탁드려요~

(예) 주차에 28 을 입력하면  C가 나올 수 있도록.

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

 사실 이 문제는 해당 주차의 시작일과 끝일을 알면 되는 문제일텐데요..

문제는 주차.. 라는 개념이 문화나 환경에 따라서 달라질 수 있는 개념이라서

답변을 하기 전에 먼저 드려야 하는 질문들이 아래와 같이 있습니다.

-. 주의 시작은 월요일(ISO 8601)인가요? 일요일(SQL서버 기본값)인가요?

-. 동일한 주가 2개의 주차를 갖을 수 있나요? (ISO 8601은 허용 안함, SQL 서버는 기본적으로 허용함)
예: 2014-12-29부터 2015-01-04까지라는 하나의 기간에 대해 2014년 53주이면서 동시에 2015년 01주인지 2014-12-31도 2015년 01주 인지

--. 위의 질문에 2개의 주차가 된다면 2014년 53주 쿼리시 2015-01-01은 결과의 대상이 되는지 아닌지

-. 28을 입력하면 모든 년도의 28주차에 대해서 다 찾는 건가요? 아니면 쿼리를 날리는 시점을 기준으로 28주차인가요?

위의 내용을 그냥 임의로 제가 대충 이러면 되겠지... 라고 가정하고 만든 쿼리는 다음과 같은 식으로 만들어 지기는 하는데... (쫌 길죠? 일부는 ISO-8601용으로 기존에 사용하고 있던 코드에서 따오고 기존 코드에 없던 일부는 SQL 서버 기준에 맞춰 작성하다보니.. ㅋ)

 

 

DECLARE @wn INT
;
SET @wn = 27
;
WITH tbl ( gDate, col )
AS
(
SELECT '2015-07-01', 'A'
UNION ALL SELECT '2015-07-02', 'B'
UNION ALL SELECT '2015-07-05', 'C'
UNION ALL SELECT '2015-07-14', 'D'
)
SELECT *
FROM tbl
WHERE DATEADD( DAY, ( ( 7 - DATEPART( WEEKDAY, DATEADD( WEEK, @wn-1, DATEADD( YEAR, DATEDIFF( YEAR, 0, GETDATE() ), 0 ) ) ) ) % 7 ) - 6, DATEADD( WEEK, @wn-1, DATEADD( YEAR, DATEDIFF( YEAR, 0, GETDATE() ), 0 ) ) ) <= gDate 
AND gDate < DATEADD( DAY, ( ( 7 - DATEPART( WEEKDAY, DATEADD( WEEK, @wn-1, DATEADD( YEAR, DATEDIFF( YEAR, 0, GETDATE() ), 0 ) ) ) ) % 7 ) + 1, DATEADD( WEEK, @wn-1, DATEADD( YEAR, DATEDIFF( YEAR, 0, GETDATE() ), 0 ) ) )
;
 

 

우욱님이 2015-07-09 03:57에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
6919[질문] SQL Server 2012 의 가져오기 기능 "엑셀 2010" 이상 지원 문의 [1]
궁금이
2015-09-28
5297
6918같은 이름중에서 코드가 일부 상이한 번호 찾기
초보네
2015-08-27
4800
6917쿼리 질문입니다.
멤멤
2015-08-19
4769
6916주차에 관련하여 질문있습니다. [1]
MSSQL
2015-07-08
5832
6915ms-sql을 -> mysql로 바꾸려면..
김다윗
2015-07-03
4913
6914select 후 insert 질문입니다. [5]
꽃씨하나
2015-06-18
5996
6913SQL 초보자 입니다. [1]
혀니
2015-06-15
5924
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.052초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다