![](/img/trans.png)
[英]Oracle SQL: selecting date field without day (Only Month and Year)
[英]SQL Server select date year/month portion only without day and with comparison
我在一個表中有一個列表,其中包含StartDate (not null)
和EndDate (null)
(均為date
類型,沒有時間)。
活動條目是StartDate <= querydate
和EndDate 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.