這不應該這麼難。我只是需要以下條件:SQL Server下一年的第一天?
SET @DueDate = CONVERT (DATETIME, '01/01/2010')
不過,我需要它務實,這樣,如果是2010年三月,由於將日期'01/01/2011' 。
我知道這很簡單,但我的大腦並沒有想出它。我確定它是用DateAdd和getdate()
。
這不應該這麼難。我只是需要以下條件:SQL Server下一年的第一天?
SET @DueDate = CONVERT (DATETIME, '01/01/2010')
不過,我需要它務實,這樣,如果是2010年三月,由於將日期'01/01/2011' 。
我知道這很簡單,但我的大腦並沒有想出它。我確定它是用DateAdd和getdate()
。
現在和零年之間的分界線數量減去一個(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)
也許,創建一個表與今年第一日期,然後選擇比您的日期更大的最小尺寸。或許簡單地把一個字符串放在一起,'01/01'+(MyYear + 1)?
基於數據庫期刊文章:How to Calculate Different SQL Server Dates:
首先下一頁年
我用一年的時間間隔(YY)的日顯示下一個年的第一天。
選擇DATEADD(YY,DATEDIFF(YY,-1,GETDATE()),0)
謝謝,但不應該是: 選擇DATEADD(yy,DATEDIFF(yy,-1,getdate()),0) 與上面相同的下一年? – DavidStein 2009-08-24 19:25:33
是的。正如發佈的那樣,這是今年*的第一天。我會做出改變。 – 2009-08-24 19:54:51
你可以添加一個到當前的年份,然後用的concat 1月1,然後再轉換回日期:
select CONVERT(datetime, CONVERT(VARCHAR(20), YEAR(GETDATE())+1) + '.01.01')
順便說一下,SQL 2012,你可以做DATEFROMPARTS(YEAR(@date) + 1, 1, 1)
。在你的情況,DATEFROMPARTS(YEAR(GETDATE()) + 1, 1, 1)
使用你上面的例子一些地方也能做到這一點。現在這假設您的可接受的日期格式匹配M-d-yyyy。
DATEADD(year, 1,'1-1-'+convert(varchar,DATEPART(YYYY,GetDate())))
注意:您知道現在的日期,拿到年終部分,創建轉換爲日期的字符串,然後添加一個到一年。
其實,返回'1/2/2010'。 :) – DavidStein 2009-08-24 19:09:29
第二個工作。謝謝。 – DavidStein 2009-08-24 19:11:03