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 3597 게시물 읽기
No. 3597
그날이 속한 주의 첫째날과 마지막 날 구하는 방법
작성자
황경운(rhce)
작성일
2007-06-30 11:37ⓒ
2007-06-30 11:39ⓜ
조회수
4,195

제목이 조금 이상하죠.


입력 : 일자

출력 : 그일자가 속한 주의 시작일과 마지막일


입력된 일자로 속한 주의 통계를 뽑아야 할 일이 있었습니다.


좀더 간단한 방법도 있을 듯 한데.


//-----------------------------------------------------------------

조건값: 오늘의 마지막 날짜

select 

datepart(dd,dateadd(dd,-datepart(dd,dateadd(mm,1,getdate())),dateadd(mm,1,getdate())))

//-----------------------------------------------------------------


create function WeekStartTemp(@date datetime) returns int

as

begin

  declare @ans int

  if (datepart(dd,@date) - datepart(weekday,@date) +1) < 0

  begin

    set @ans=1

  end

  else

  begin

    set @ans=datepart(dd,@date) - datepart(weekday,@date) +1

  end

return @ans

end

Go



create function WeekEndTemp(@date datetime) returns int

as

begin

declare @tmp int,@LastDay int,@ans int

set @LastDay= datepart(dd,dateadd(dd,-datepart(dd,dateadd(mm,1,@date)),dateadd(mm,1,@date)))

set @tmp= datepart(dd,@date) +(7-datepart(weekday,@date) )


if @tmp > @LastDay

begin

  set @ans=@LastDay

end

else

begin

  set @ans=@tmp

end

return @ans

end


//-----------------------------------------------------------------

테스트


select dbo.WeekStartTemp(getdate()),dbo.WeekEndTemp(getdate())

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

잘 구하셨습니다. 
안되는 실력이지만 아래와 같이 정리를 해봤습니다.


DECLARE @DT CHAR(8)
SET @DT = '20070703'

SELECT [START_WEEKDAY]  = CONVERT(CHAR(8)
        , DATEADD(DD, -1 * (DATEPART(WEEKDAY, @DT) - 1), @DT)
        , 112)
    , [END_WEEKDAY] = CONVERT(CHAR(8)
        , DATEADD(DD, (7 - DATEPART(WEEKDAY, @DT)), @DT)
        , 112)

.님이 2007-07-02 11:22에 작성한 댓글입니다. Edit

훨씬 더 보기 좋네요. 연산도 덜할듯.

황경운(rhce)님이 2007-07-04 15:46에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
3600insert 시에 이진 데이터 잘립니다 할때 잘려도 억지로 insert 되게.. [3]
초보
2007-07-03
8335
3599균등 SELECT
장대서
2007-07-03
2240
3598쿼리문 질문합니다....도와주세요... [2]
지화복
2007-07-01
2529
3597그날이 속한 주의 첫째날과 마지막 날 구하는 방법 [2]
황경운
2007-06-30
4195
3596ms sql에서는 최대로 만들수있는 필드수가... [2]
김태원
2007-06-29
2341
3595자료형에 관한 질문드립니다.
이석
2007-06-29
2386
3594윈도우 인증 사용시
궁금이
2007-06-28
2109
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다