3

SQLSELECTステートメントに問題があります。基本的に、取引日が今日の日付と今日の日付から 6 か月を引いた日付の間にあるすべてのレコードを返したいと考えています。

私がこれまでに試したことは次のとおりです。

SELECT * FROM loan_ledger
WHERE trandate <= DATEADD(month,-6,GETDATE())

しかし、正確な結果は得られません。結果は 2009 または 2007 のような日付を返しましたが、私が望むのは、今日の日付が 2012 年 4 月 9 日の場合、結果はこの日付 (2012 年 4 月 9 日) から 2012 年 4 月 9 日から 6 か月 (10 月) を引いたトランザクションでなければなりません。 9,2011)。それだけ。

結果には過去の取引が表示されていて、2009 年と 2001 年の記録がまだ表示されているのは、なんともったいないことです。

誰かが私を助けることができますか?

4

4 に答える 4

2

他の答えは近いですが、BETWEENを使用している場合、今日を含めたい場合は日付に1つ追加する必要があります

select * from loan_ledger
where trandate BETWEEN dateadd(month,-6,getdate()) AND getdate()+1

between を getdate で使用する場合、1 時でない限り今日は含まれません。

于 2012-04-10T01:34:54.263 に答える
1

where句を変更するだけです

select * from loan_ledger
where trandate >= dateadd(month,-6,getdate()) AND trandate <= getdate()

よろしく。

于 2012-04-10T01:28:28.940 に答える
1

あなたのwhereステートメントは、「6か月前から今日までのものをつかむ」ではなく、「日付が6か月前のときに情報をつかむ」と言っています

のようなものを試してください

select * from loan_ledger
where trandate BETWEEN dateadd(month,-6,getdate()) AND getdate()
于 2012-04-10T01:29:28.947 に答える
0

trandate <= 6 か月前の行を求めています。確かに、2007 年のすべてのトランデートはその基準に適合しています。

今日から 6 か月前までトランザクションのみが必要な場合は、

trandate between dateadd(month, -6, getdate()) and getdate()  
于 2012-04-10T01:31:37.640 に答える