Sql server 搜索两个日期之间的月份

Sql server 搜索两个日期之间的月份,sql-server,Sql Server,我是sqlserver的新手,我正在努力解决这个问题。我需要你的帮助。 我的数据库中有一个名为MainTable的表。在表中,我有3列名为Id、StartDate、EndDate。 我想要的是:我想发送一个月的查询,它将查看该月是否在开始日期和结束日期之间。如果是,它应该返回该行的ID 例如: 第1行:Id:12,开始日期:2015-01-01,结束日期:2015-06-01 第2行:Id:14,起始日期:2015-05-01,结束日期:2015-08-01 如果我问“三月”。它应该返回12 我

我是
sqlserver
的新手,我正在努力解决这个问题。我需要你的帮助。 我的数据库中有一个名为
MainTable
的表。在表中,我有
3列
名为
Id、StartDate、EndDate
。 我想要的是:我想发送一个月的查询,它将查看该月是否在开始日期和结束日期之间。如果是,它应该返回该行的ID

例如:

第1行:Id:12,开始日期:2015-01-01,结束日期:2015-06-01

第2行:Id:14,起始日期:2015-05-01,结束日期:2015-08-01

如果我问“三月”。它应该返回12

我可以写两个日期之间的月份,但我不能用它进行查询


你能帮我吗?

你可以键入
March
并期望它返回
column id=12
但是您可以键入3,它将返回正确的行

declare @MonthNum as tinyint

select id from MainTable where @MonthNum between 
datepart(Month,Startdate) and datepart(Month,EndDate)
你可以试试这个

DECLARE @MonthName VARCHAR(10)
SET @MonthName='March' -- Here you need to pass month name
DECLARE @MonthNumber INT
SELECT @MonthNumber= CASE @MonthName
                     WHEN 'January' THEN 1
                     WHEN 'February' THEN 2
                     WHEN 'March' THEN 3
                     WHEN 'April' THEN 4
                     WHEN 'May' THEN 5
                     WHEN 'June' THEN 6
                     WHEN 'July' THEN 7
                     WHEN 'August' THEN 8
                     WHEN 'September' THEN 9
                     WHEN 'October' THEN 10
                     WHEN 'Nonvember' THEN 11
                     WHEN 'December' THEN 12
                     END
SELECT Id FROM MainTable 
WHERE @MonthNumber BETWEEN DATEPART(MONTH,StartDate) AND DATEPART(MONTH,EndDate)
您需要通过MonthName查询才能工作。
谢谢

你想要月数还是月名,什么?你写的代码在哪里?可能重复的请告诉我们你到目前为止做了什么。此代码对我来说很好,但当开始日期的月份大于结束日期的月份时会出现问题。例如:开始日期:2014-10-01,结束日期:2015-05-01。如果我查询3(三月),它不会返回任何结果。