2

SQL Server 2008を使用していて、1年前の2つの日付を計算しようとしています。今日が3/18/13の場合、4/1/12を検索し、4/30/12も検索する必要があるとします。

私は4/18/12を与える以下を試しましたが、上記の希望の日付を取得する方法がわかりません。また、5/1 / 12、5 / 31/12…などを見つける必要があります。何かアイデアはありますか?ありがとう。

DATEADD(MONTH,-11, GETDATE())    -  returns 4/18/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 
4

1 に答える 1

3

1 年前の今日から翌月の最初と最後の日が必要な場合は、次のようにします。

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))))

これを行うためのより効率的な方法があれば、私は驚かないでしょう。さまざまな SQL Server の日付を計算する方法の例の記事では、これらの種類の計算について説明しています。

于 2013-03-18T22:20:59.733 に答える