0

これは私がこれまでに持っているものです:

SELECT ListKey
FROM Closing_List
WHERE DATEPART(YEAR,closedate) > DATEPART(YEAR,GETDATE())-2)

しかし、私は 24 か月前に戻りたいと思っています。

ありがとう!

4

3 に答える 3

3
SELECT ListKey
FROM Closing_List
WHERE closedate > DATEADD(MONTH, -24, GETDATE())
于 2013-08-30T17:07:10.717 に答える
2
SELECT ListKey
FROM Closing_List
WHERE closedate > DATEADD(MONTH,-24,GETDATE())
于 2013-08-30T17:27:31.247 に答える
0

DATEADD日付で何をしているのかを知っている限り、使用は問題ありません。

GetDate()現在の日付と時刻を返します。今の私にとってそれは08/30/2013 02:18:14pm

DATEADD(MONTH,-24,GETDATE())それを利回りに渡す08/30/2011 02:18:14pm'

そのため、その情報を使用してクエリを実行すると、 closedate より大きい (等しくない) を持つすべての結果が得られます08/30/2011 02:18:14pm。それについて考慮すべき点がいくつかあります。

たとえば、2011 年 8 月 30 日の午後 1 時に終了したレコードがある場合、それらは結果に含まれません。さらに、締め切り日に時間がまったくない場合、2011 年 8 月 30 日以降のレコードは取得されません。

また、2013 年 9 月 2 日にそのクエリを実行すると、2011 年 9 月 1 日からのレコードは含まれないことに注意してください。必要に応じて、それが問題になる場合とそうでない場合があります。

別の解決策は次のとおりです。

SELECT ListKey
FROM Closing_List
WHERE closedate >= dateadd(month,datediff(month,0,getdate())-24,0)

上記を 2013 年 9 月にいつでも実行すると、2011 年 9 月から 2013 年 9 月までの終了日を持つすべてのレコードが含まれます。現在が何日であるか、または終了日に時間データが含まれているかどうかは関係ありません。

于 2013-08-30T18:31:16.760 に答える