SQL 日期与单独列中的月份和年份进行比较

问题描述 投票:0回答:1

我有一个表(我们称之为 MyData),其中包含一些信息,并且还在单独的列中存储月份和年份,但没有日期,所以它看起来像这样:

一些数据1 |一些数据2 |月 |年份|一些数据N...

...         ...       1     2021     ...
...         ...       2     2021     ...
...         ...       3     2021     ...
...         ...       8     2022     ...
...         ...      12     2022     ...
...         ...       5     2023     ...
...         ...       7     2023     ...

我需要获取从 2021 年 3 月到今天的所有数据。

我试图将月份和年份列转换为日期,同时添加 01 作为日期的日期部分(具体日期并不重要,因为它甚至没有存储在表中)。然后,我想将表中转换后的日期与我所需的 2021 年 3 月日期 ('2021-03-01) 进行比较。我什至不确定是否有必要将白天部分也添加到其中任何一个中。

我真的很困惑,不知道该怎么做。也许有比转换为日期并比较更简单的解决方案?

我已经尝试过:

SELECT DATEFROMPARTS([Year], [Month], 01) AS DATE
               FROM dbo.MyData)

所以现在我有日期格式的所有月/年列,但真的不知道从这里去哪里。

我想做一些类似的事情

SELECT * FROM MyData
WHERE (SELECT DATEFROMPARTS(year_nbr, month_nbr, 01) AS DATE
               FROM dbo.TEG_BusinessPlanChange)) > '2021-03-01'

提前致谢。

sql sql-server
1个回答
0
投票

在您的情况下,最好的解决方案是将两个条件结合起来,如下所示。

SELECT [Data]
      ,[Month]
      ,[Year]
FROM [Test].[dbo].[Table]
WHERE ([Month] >= 3 AND [Year] = 2021) OR [Year] > 2021
© www.soinside.com 2019 - 2024. All rights reserved.