2017-08-23 64 views
2

SQL查詢將獲得下一年的15個月。SQL下一年的第15個月

今天

select getdate() = 2017-08-23 17:05:24.143 

尋找:2018年8月15日00:00:00

我知道如何從今天獲得一年:

select dateadd(year,1,datediff(day,0,getdate())) 

我知道如何得到一個月初:

SELECT DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0) 

但是,我無法將這兩者結合起來。

回答

5

可以使用datefromparts爲SQL Server 2012及以上版本。

select datefromparts(year(getdate())+1,month(getdate()),15) 
2

使用您擁有的代碼截斷當前月份的開始日期,但添加12個月(如此,一年),並添加14天。

select dateadd(day,14,dateadd(month, 12+datediff(month, 0, getdate()), 0)) 
1
SELECT DATEADD(month, DATEDIFF(month, 0, DATEADD(year, 1, DATEDIFF(day, 0, GETDATE())), 0) 
+0

不工作 - DateDiff函數需要3個參數(S)。 – Jay

1

Vamsi Prabhala's答案值得接受。

但是,您應該考慮創建一個Calendar Table,因爲它大大簡化了日期處理工作。

這裏是一個非常簡單的查詢得到你想要的結果:

select * from Calendar C where C.year = datepart(year, getdate()) + 1 
     and C.day_of_month = 15 and C.month = datepart(m, getdate()) 

Rextester Demo

+0

感謝您的演示 – Jay

相關問題