2016-02-19 32 views
1

長時間讀者,第一次張貼海報。 我做了搜索,找不到任何與此匹配的其他問題。所有我能找到涉及有2個日期列進行比較。如果之前確實已經回答了,我爲創建重複帖子而道歉。MS SQL查找期限一個日期只屬於給定期限開始日期

我一直在考慮一個表3列:

Period (int) - Name (varchar) - StartDate (datetime) 
1 Period 1 2016-01-04 00:00:00.000 
2 Period 2 2016-02-01 00:00:00.000 
3 Period 3 2016-02-29 00:00:00.000 
4 Period 4 2016-03-28 00:00:00.000 
5 Period 5 2016-04-25 00:00:00.000 
6 Period 6 2016-05-23 00:00:00.000 

我很遺憾沒有改變表添加第二個日期列包含各個時期的結束日期的選項。每個期間的結束日期都是緊接列出的StartDate之前的日期。

我會通過一個日期,需要找到日期所屬的時間段。

任何人都可以提供一些方向?

+1

所以你想選擇比你的日期參數少的最高日期?這足夠暗示了嗎?最熱門的日期? –

+0

*臉掌*感謝您選擇Alleman。 – Don

回答

1

鑑於從標籤Alleman按照上面的提示/評論,我建立了以下內容:

select top 1 period from PeriodDetail 
where StartDate <= getdate() 
order by startdate desc 

由於GETDATE(此時)返回2016年2月19日,正確的結果是期間2.

謝謝大家。

2

嘗試此查詢:

SELECT TOP 1 * 
FROM Table 
WHERE StartDate >= @GivenDate 
ORDER BY StartDate 
相關問題