【问题标题】:Search Months Between Two Dates搜索两个日期之间的月份
【发布时间】:2023-04-08 00:51:01
【问题描述】:

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

例如:

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

在第 2 行:ID:14,开始日期:2015-05-01,结束日期:2015-08-01

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

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

你能帮帮我吗?

【问题讨论】:

标签: sql-server


【解决方案1】:

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

declare @MonthNum as tinyint

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

【讨论】:

  • 这段代码对我有好处,但是当开始日期的月份大于结束日期的月份时会出现问题。例如:开始日期:2014-10-01,结束日期:2015-05-01。如果我查询 3(3 月),它不会返回任何结果。
【解决方案2】:

你可以试试这个

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

【讨论】:

    猜你喜欢
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    相关资源
    最近更新 更多