Sql-Server
是否可以編寫一個 SELECT 語句來獲取 2 個日期列之間的所有日期?
我的問題與這兩個問題有關:
- https://stackoverflow.com/questions/17529860/how-to-list-all-dates-between-two-dates/27319120
- https://stackoverflow.com/questions/1378593/get-a-list-of-dates-between-two-dates-using-a-function
但是在我的情況下,我有一個帶有 ID、StartDate、EndDate 列的表,我想應用相同的方法(但我想使用整個表而不是 2 天)。
在進入函式之前,我想看看這是否可以通過選擇和日期維度表來實現。
基本上我想把它擴展到整個表:
SELECT t.Id ,dd.[Date] FROM dbo.DateDimension dd ,dbo.T1 t WHERE t.Id = 957 and dd.Date>=t.StartDate and dd.Date <= t.EndDate
我在這裡有範例數據 + 所需輸出(選擇語句):
您的問題中可能有一些我不明白的地方,但從外觀上看,您所要做的就是刪除謂詞
t.id = ?
您可以通過使用謂詞來縮短查詢BETWEEN
,我也更喜歡顯式 JOINS 而不是“,”連接:SELECT t.Id, dd.[Date] FROM dbo.DateDimension dd JOIN dbo.dbse t ON dd.Date BETWEEN t.StartDate and t.EndDate;
在您的小提琴範例中,您輸出 3 個 id。如果您只想要一個子集,您可以使用 IN 謂詞:
SELECT t.Id, dd.[Date] FROM dbo.DateDimension dd JOIN dbo.dbse t ON dd.Date BETWEEN t.StartDate and t.EndDate; WHERE t.id IN (4229, 4268, 4269);