2017-10-20 48 views
0

我從表中得到這個數據:的SQL Server 2014爆炸的日期只顯示一年

id arrival_date departure_date 
1  2017-10-10  2017-10-15 
2  2017-11-16  2017-11-30 
3  2017-10-14  2017-10-31 
4  2018-05-12  2017-05-22 
5  2021-01-16  2021-03-15 
6  2018-06-02  2017-07-02 

我要的是爆炸這些日期,但我只是想顯示年僅

date 
2017 
2018 
2019 
2020 
2021 

這些應該是我想看到的是他們對這些的任何疑問? 注意:如果今年是2018年,它應該在2018年開始,所以我會在該例中使用getdate(),我想在departure_date部分獲得最大值,我可以這樣做嗎?

+0

什麼是你的表的模式定義?這些字符串或實際的日期/日期時間/或日期時間2類型? – Igor

+0

@igor這些只是日期數據類型 – GGw

+0

您是否嘗試過'YEAR'? –

回答

1

你可以嘗試遞歸CTE

DECLARE @maxYear INT 
SELECT @maxYear = MAX(YEAR(departure_date)) FROM YourTable 

;WITH cte 
AS 
(
    SELECT YEAR(GETDATE()) AS [Year] 
    UNION ALL 
    SELECT [Year] + 1 
    FROM cte 
    WHERE [Year] < @maxYear 
) 

SELECT * 
FROM cte 

DEMO

+0

這回答我的問題:) – GGw

+0

這項工作,但要小心。使用遞歸cte來計算像這樣看起來基於集合,但事實上並非如此。 http://www.sqlservercentral.com/articles/T-SQL/74118/ –

+0

非常感謝:) – GGw

1

只需使用YEAR(arrival_date)YEAR(departure_date)

+0

我得到這個,但事情是我想爆炸它,我想要輸出像第二部分 – GGw