簡體   English   中英

SQL Server僅選擇日期年/月部分,沒有日期,並且有比較

[英]SQL Server select date year/month portion only without day and with comparison

我在一個表中有一個列表,其中包含StartDate (not null)EndDate (null) (均為date類型,沒有時間)。

活動條目是StartDate <= querydateEndDate with null or > querydate條目。

所以我的查詢基本上就像

SELECT * 
FROM MyDataTable 
WHERE StartDate <= mydate 
  AND (EndDate IS NULL OR EndDate >= mydate )

對於圖表中的統計數據,我想知道過去幾個月中在特定月份中哪些統計數據處於活動狀態。 我在一年和一個月內(以編程方式)循環(2017-10、2017-11、2017-12、2018-1,...)

如何使用程序循環的年和月選擇所有活動條目,而忽略日部分?

如果您希望整個月都保持活躍:

SELECT *
FROM MyDataTable
WHERE StartDate <= '2017-10-01' AND 
      (EndDate IS NULL OR EndDate >= '2017-11-01');

如果您想在當月的任何時間進行活動:

SELECT *
FROM MyDataTable
WHERE StartDate < '2017-11-01' AND 
      (EndDate IS NULL OR EndDate > '2017-10-01');

我認為您可以通過使用' DATEDIFF(datepart,startdate,enddate) '僅使用幾個月來實現此目的:

DECLARE @startDate DATE = '2017-11-01';
DECLARE @numberOfMonth INT;

SELECT @numberOfMonth = datediff(month, @startDate, GETDATE());


SELECT * 
FROM MyDataTable 
WHERE datediff(month, StartDate, GETDATE()) >= @numberOfMonth
AND (EndDate IS NULL OR datediff(month, EndDate, GETDATE()) <= 
@numberOfMonth)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM