2009-08-24 84 views
2

這不應該這麼難。我只是需要以下條件:SQL Server下一年的第一天?

SET @DueDate = CONVERT (DATETIME, '01/01/2010') 

不過,我需要它務實,這樣,如果是2010年三月,由於將日期'01/01/2011' 。

我知道這很簡單,但我的大腦並沒有想出它。我確定它是用DateAdd和getdate()

回答

7

現在和零年之間的分界線數量減去一個(1899年12月31日),再加上。

SELECT DATEADD(year, DATEDIFF(year, -1, GETDATE()), 0) 

讓我們嘗試的日期在明年獲得2011年因爲1 2010年1月是在2009年,明年開始......

SELECT DATEADD(year, DATEDIFF(year, -1, '2010-03-21'), 0) 
+0

其實,返回'1/2/2010'。 :) – DavidStein 2009-08-24 19:09:29

+0

第二個工作。謝謝。 – DavidStein 2009-08-24 19:11:03

0

也許,創建一個表與今年第一日期,然後選擇比您的日期更大的最小尺寸。或許簡單地把一個字符串放在一起,'01/01'+(MyYear + 1)?

2

基於數據庫期刊文章:How to Calculate Different SQL Server Dates

首先下一頁

我用一年的時間間隔(YY)的日顯示下一個年的第一天。

選擇DATEADD(YY,DATEDIFF(YY,-1,GETDATE()),0)

+0

謝謝,但不應該是: 選擇DATEADD(yy,DATEDIFF(yy,-1,getdate()),0) 與上面相同的下一年? – DavidStein 2009-08-24 19:25:33

+0

是的。正如發佈的那樣,這是今年*的第一天。我會做出改變。 – 2009-08-24 19:54:51

0

你可以添加一個到當前的年份,然後用的concat 1月1,然後再轉換回日期:

select CONVERT(datetime, CONVERT(VARCHAR(20), YEAR(GETDATE())+1) + '.01.01') 
0

使用你上面的例子一些地方也能做到這一點。現在這假設您的可接受的日期格式匹配M-d-yyyy。

DATEADD(year, 1,'1-1-'+convert(varchar,DATEPART(YYYY,GetDate()))) 

注意:您知道現在的日期,拿到年終部分,創建轉換爲日期的字符串,然後添加一個到一年。

相關問題