2014-03-05 3 views
0

다음 쿼리의 경우 각 @currentdate와 @workingdatekey의 mm 부분을 비교해야합니다. yyyymmdd 형식에서 mm 부분 만 비교하는 방법? @workingdatekey의 달은 @currentdate의 달이 다른 출구저장 프로 시저의 Datepart

Declare @currentdate int 
set @currentdate = CONVERT(int,CONVERT(varchar(20),GETDATE(),112)) 
print @currentdate 


Declare @workingdatekey int 
set @workingdatekey = CONVERT(int,CONVERT(varchar(20),GETDATE()-1,112)) 
print @workingdatekey 
+0

이 질문은 SQL Server 또는 MySQL입니까? 태그가 혼란 스럽습니다. MONTH() 함수를 확인하십시오. http://technet.microsoft.com/en-us/library/ms187813.aspx –

답변

1
IF (MONTH(GETDATE()-1) = MONTH(GETDATE())) 
BEGIN 
    /* DO something here */ 
END 
ELSE 
BEGIN 
    /* Else do something here*/ 
END 
0

당신은 VARCHAR에 그 값을 변환 이유가 거기를 계속 동일하면? 그렇지 않은 경우 datepart (mm, "날짜 열")을 수행 할 수 있습니다. 그러면 날짜의 달이 반환됩니다. 그런 다음 수행 할 수 있습니다

if datepart(mm, "currentdatekey") = datepart(mm, "workingdatekey") 
     print 'They matched' 
else 
     print 'They are different' 
1

1) 날짜 값이 다음 달 번호를 추출하기 위해 MONTH 기능을 사용해야 적절한 유형 ([SMALL][DATE]TIME[2])를 사용하여 저장되어있는 경우.

2) 그렇지 않으면 어떤 이유로 날짜 값이 INT 값 (형식 : yyyymmdd)으로 저장되면 (IntDate/100) % 100을 사용하여 월 번호를 얻을 수 있습니다.

DECLARE @NowAsDT DATETIME; 
SET  @NowAsDT = GETDATE(); 
SELECT @NowAsDT AS CurrentDateDT, MONTH(@NowAsDT) AS CurrentMonthFromDT; 
/* 
CurrentDateDT   CurrentMonthFromDT 
----------------------- ------------------ 
2014-03-05 23:22:58.023 3 
*/ 

DECLARE @NowAsINT INT; 
SET  @NowAsINT = CONVERT(VARCHAR(8), @NowAsDT, 112) -- Style 112 = yyyymmdd 
SELECT @NowAsINT AS CurrentDateINT, (@NowAsINT/100) % 100 AS CurrentMonthFromINT 
/* 
CurrentDateINT CurrentMonthFromINT 
-------------- ------------------- 
20140305  3 
*/