2013-03-18 65 views
2

我正在使用SQL Server 2008,我試圖計算一年前的兩個日期。假設今天是2013年3月18日,我需要找到4/1/12,並且也找到4/30/12。查找去年在SQL Server中的日期

我試過以下給我4/18/12,但不知道如何得到上面提到的期望的日期。另外,我需要找到5/1/12,5/31/12 ...等任何想法?謝謝。

我也試過

DATEADD(YEAR,-1, DATEADD(MONTH,DATEDIFF(MONTH,-11, GETDATE()), 0)) It returns 4/1/12 , 
DATEADD(YEAR,-1, DATEADD(MONTH,DATEDIFF(MONTH,-10, GETDATE()), 0)) also returns 4/1/12 instead of 5/1/12 
+0

爲什麼你需要*計算*他們?這只是一個訓練練習嗎?如果是這樣,您可能需要從1月1日起獲取天數,然後添加此數字以獲得所需日期,從而使用'DATEDIFF'和'DATEADD'的組合。這個邏輯將獨立於當前日期 - 如果這沒有問題。 – 2013-03-18 21:54:01

+0

您是否確定要從今天的日期開始和結束下個月,但是從一年前?對總體要求的一個很好的描述會有所幫助。 – 2013-03-18 21:55:47

+0

是的,從今天的日期開始和結束的下個月,但從一年前。這不是訓練練習,而是一個我正在創作的報告。 – Joe 2013-03-19 00:53:34

回答

3

如果你想要的是從一年前的今天在次月的第一天和最後一天,這樣的事情可能工作:

SELECT DATEADD(month,-11,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)) 
SELECT DATEADD(month,-11,DATEADD(ms,-3,DATEADD(mm,0,DATEADD(mm,DATEDIFF(mm,0,GETDATE())+1,0)))) 

如果有更有效的方法,我不會感到驚訝。文章examples of how to Calculate Different SQL Server Dates討論了這些計算。

+0

謝謝,我會試試看 – Joe 2013-03-18 23:02:18