搜索两个日期之间的月份

时间:2016-02-18 11:20:39

标签: sql-server

我是SQL Server的新手,我正试图找出它。在案件中我需要你的帮助。 我的数据库中有一个名为MainTable的表。在表格中,我3 Columns名为Id, StartDate, EndDate。 我想要的是:我想发送一个月的查询,它将查看该月是否在开始日期和结束日期之间。如果是,它应该返回该行的ID。

例如:

第1行:Id:12,Startdate:2015-01-01,EndDate:2015-06-01

第2行:Id:14,Startdate:2015-05-01,EndDate:2015-08-01

如果我查询' March'。它应该返回12

我可以在两个日期之间写几个月,但我不能在其中查询。

你能帮助我吗?

2 个答案:

答案 0 :(得分:0)

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

declare @MonthNum as tinyint

select id from MainTable where @MonthNum between 
datepart(Month,Startdate) and datepart(Month,EndDate)

答案 1 :(得分:0)

你可以试试这个

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查询应该工作。 谢谢