这将是我的解决方案。您可以将年份保留为 NULL,但您可以根据需要选择年份。
测试数据
IF OBJECT_ID('tempdb..#TestData') IS NOT NULL DROP TABLE #TestData
GO
CREATE TABLE #TestData (ID int, DateField datetime)
INSERT INTO #TestData (ID, DateField)
VALUES
(1,'2016-01-01')
,(2,'2016-02-02')
,(3,'2016-01-25')
,(4,'2016-02-16')
,(5,'2015-01-12')
,(6,'2015-01-20')
查询
DECLARE @MonthVariable int; SET @MonthVariable = '1'
DECLARE @YearVariable int; SET @YearVariable = '2016'
SELECT
ID
,Datefield
FROM #TestData
WHERE DATEPART(mm,DateField) = @MonthVariable
AND (DATEPART(yy,DateField) = @YearVariable
OR @YearVariable IS NULL)
输出
ID Datefield
1 2016-01-01 00:00:00.000
3 2016-01-25 00:00:00.000
如果您总是想要当前年份,那么您可以这样做;
DECLARE @MonthVariable int; SET @MonthVariable = '1'
SELECT
ID
,Datefield
FROM #TestData
WHERE DATEPART(mm,DateField) = @MonthVariable
AND DATEPART(yy,DateField) = DATEPART(yy,GETDATE())