★ 질문 )))) ST와 ST3은 달의 마지막날인 31일자로 나와야하는데 어떻게 SELECT 문을 써야할까요
★ 나와야하는 답안 ******
ST = 20150331
ST3 = 20150131
☆ 현재 쿼리문 )))
SELECT
퇴직날짜 (2015430) ,
CONVERT(varchar,DATEADD(mm, -1 , 퇴직날짜 (2015430)), 111) AS ST
CONVERT(varchar,DATEADD(mm, -2 , 퇴직날짜 (2015430)), 111) AS ST
CONVERT(varchar,DATEADD(mm, -3 , 퇴직날짜 (2015430)), 111) AS ST
FROM 인사정보테이블
WHERE 사번 = '130101'
☆ 현재 쿼리 결과 ( OUTDT = 퇴직날짜 (20150430))
Comment 5
-
짱나부러
2015.05.07 16:25
-
catchv
2015.05.07 16:49
DECLARE @dtDate DATETIME
SET @dtDate = '2015-04-15'
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@dtDate)+1,0)) -
짱나부러
2015.05.07 17:00
우와.... 이렇게 간단한 방법이...... 눈이 번쩍 번쩍 하네요!!
-
철스
2015.05.07 17:16
DECLARE @YMD VARCHAR(8);
SET @YMD = '20150430';
SELECT @YMD
SELECT CAST(DATEADD(D, -1, LEFT(@YMD, 6)+'01') AS DATE)
SELECT CAST(DATEADD(D, -1, DATEADD(M, -1, LEFT(@YMD, 6)+'01')) AS DATE)
SELECT CAST(DATEADD(D, -1, DATEADD(M, -2, LEFT(@YMD, 6)+'01')) AS DATE) -
마힐링
2015.05.07 17:20
ㅜㅜ 우오
세분 모두 감사합니다 !!
다 잘 해결되었습니다 >_<!!
declare @outDT datetime, @setOutDT datetime;
declare @1m int, @2m int, @3m int;
set @outDT = '2015-04-30';
if (month(@outDT) in (2,4,6,9,11)) begin
-- 2월일때 로직이 필요해욤......
set @setOutDT = dateadd(dd, 1, dateadd(mm, 1, @outDT));
set @1m = -2;
set @2m = -3;
set @3m = -4;
end
else if (month(@outDT) in (1,3,5,7,8,10,12)) begin
set @setOutDT = @outDT;
set @1m = -1;
set @2m = -2;
set @3m = -3;
end
SELECT
@outDT ,
CONVERT(varchar,DATEADD(mm, @1m , @setOutDT), 111) AS ST1,
CONVERT(varchar,DATEADD(mm, @2m , @setOutDT), 111) AS ST2,
CONVERT(varchar,DATEADD(mm, @3m , @setOutDT), 111) AS ST3
좀 더 괜춘한 방법은 다음 분께....