查找特定月份的记录

时间:2016-03-22 12:13:31

标签: sql sql-server stored-procedures

enter image description here

我正在使用WHERE子句中使用的4个输入参数(2 * ID,年份和月份)创建存储过程。

问题是我似乎无法在某个时期为特定月份编写正确的语法来获取价值(Koeficient)。

ALTER PROCEDURE [dbo].[obrPla_DohvatiPojedineRadniciKoeficientZaObracun]    
(
    @IDFirma INT,
    @IDRadnik INT, 
    @Godina SMALLINT,
    @Mjesec TINYINT
)
AS BEGIN

    SELECT rk.Koeficient       
    FROM RadniciKoeficient rk   
    WHERE rk.IDFirma = @IDFirma
        AND rk.IDRadnik = @IDRadnik
        AND DATEPART(yyyy, rk.DatumOd) = @Godina
        AND CASE WHEN rk.DatumDo IS NOT NULL
                THEN DATEPART(mm, rk.DatumOd) <= @Mjesec AND @Mjesec <= DATEPART(mm, rk.DatumDo)
                ELSE DATEPART(mm, rk.DatumOd) <= @Mjesec
            END

END

1 个答案:

答案 0 :(得分:0)

就个人而言,

我建议你删除参数@Godina和@Mesec,然后使用像@Time这样的单个参数......

然后,而不是检查年份和月份...因为您发现这两个日期之间的价值

android:digits="0123456789,-"

请继续

DATEPART(yyyy, rk.DatumOd) = @Godina and 
    case when rk.DatumDo is not null then
        (DATEPART(mm, rk.DatumOd) <= @Mjesec and @Mjesec <= DATEPART(mm, rk.DatumDo))
        else (DATEPART(mm, rk.DatumOd) <= @Mjesec)
    end