2011-03-17 4 views
0

나는 이것과 같은 Function 있습니다;SQL 함수에서 Date.Now 사용

ALTER FUNCTION [dbo].[fngcodeme] 
(
    @HESAP INT, @DOV INT, @TEKLIF VARCHAR(10), @BAS datetime, @BIT datetime 
) 
RETURNS FLOAT 

AS 
BEGIN 

DECLARE @Result FLOAT 

IF CONVERT(DATETIME, @BIT,103) <= '20110228' 
    SET @Result = (SELECT SUM(TUTAR) 
     FROM YAZ..MARDATA.M_HAREKET 
     WHERE TEMEL_HESAP = @HESAP 
     AND DOVIZ_KOD = @DOV 
     AND REF_KOD = 'GC' 
     AND BACAK_GRUP = 'PERT' 
     AND ISL_KOD = 1 
     AND ACIKLAMA LIKE '%' + @TEKLIF + '%' 
     AND ISL_TAR >= CONVERT(DATETIME, @BAS,103) 
     AND ISL_TAR <= CONVERT(DATETIME, @BIT,103) 
     ) 
ELSE 
    SET @Result = (SELECT SUM(TUTAR) 
     FROM YAZ..MARDATA.M_GHAREKET 
     WHERE TEMEL_HESAP = @HESAP 
     AND DOVIZ_KOD = @DOV 
     AND REF_KOD = 'GC' 
     AND BACAK_GRUP = 'PERT' 
     AND ISL_KOD = 1 
     AND ACIKLAMA LIKE '%' + @TEKLIF + '%' 
     AND ISL_TAR >= CONVERT(DATETIME, @BAS,103) 
     AND ISL_TAR <= CONVERT(DATETIME, @BIT,103) 
     ) 

RETURN @Result 

END 

M_GHAREKET 테이블은 월별 데이터 테이블입니다. 매월이 테이블은 M_HAREKET에로드됩니다. (및 모든 데이터를 M_GHAREKET에 삭제했습니다.

M_HAREKET은 큰 버킷입니다. M_GHAREKET이 작습니다. @BAS 날짜의 월 값은 내가 다른 M_HAREKET 표를 사용하여 M_GHAREKET 테이블을 사용하려면 동일한 DateTime.Now.Month 값의 경우,이 Function입니다 내가 원하는

(나는 M_HAREKET을 의미 지금 이상 500.000 데이터, M_GHAREKET 4.000 이상이있다).

어떻게이 기능을 변경해야합니까?

DateTime.Now.Month 인이 IF 절은 SQL Function에 있습니까?

아니면 내 ASP.NET 페이지에 사용해야합니까? 내가 어떻게 할 수 있니?

답변

2

monthyear을 사용할 수 있습니다.

declare @BAS datetime 
set @BAS = '2011-03-15' 

if month(getdate()) = month(@BAS) and 
    year(getdate()) = year(@BAS) 
+0

당신은 옳다 고도! 감사.. –

1

DATEDIFF을 사용하면 두 달 간의 차이를 찾을 수 있습니다. 이 두 날짜가

그래서
DECLARE @date1 DATETIME 
SET @date1 = '2011-03-01' 

SELECT DATEDIFF(MM, @date1, '2011-02-28') -- -1 
SELECT DATEDIFF(MM, @date1, '2011-03-20') -- 0 
SELECT DATEDIFF(MM, @date1, '2010-03-01') -- -12 

가 날짜가 같은 달에 있는지 확인하기 위해 동일한 연도 및 월에있는 경우에만 0을 반환 할 때 체크 개월 기간 경계의 수가 너무 교차 반환 올해로 오늘 (GETDATE()) 사용할 수

DECLARE @date1 DATETIME 
SET @date1 = '2011-03-01' 

IF DATEDIFF(MM, @date1, GETDATE()) = 0 
    BEGIN 
    -- Do your work 
    END 
관련 문제