2016-04-18 16 views
-1

私は、6週間未満で販売され、市場に出回っていたプロパティを表示するクエリを作成しようとしています。リスト表にはBeginListDateとEndList Dateがあります。where句クエリの作成

So far my WHERE statement looks like 
WHERE SaleStatus.Salestatus = 'Sold' AND DATEDIFF(YEAR,BeginListDate, EndListDate) >42 

ですが、そのクエリは正しくありません。私はちょうどどこに6週間未満の市場にあったものを考慮するステートメントを書くために混乱しています。

+0

これは始めるのに最適な場所です:http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ – Marusyk

+3

https:// msdn.microsoft.com/en-us/library/ms189794.aspx datepart引数を見てください。特に「日」。 – squillman

+4

Datediff(日、BeginListDate、EndListDate)<42を意味しますか? – JamieD77

答えて

0

だけ... JamieD77の非常に正確なコメント@

あなたの状態を詳しく説明するために:

DATEDIFF(YEAR,BeginListDate, EndListDate) >42 

は "BeginListDateEndListDate間の年の数が42以上である" と言います。それは長いリスト期間の地獄です。

Datediff(day,BeginListDate, EndListDate) < 42 

に行くための正しい方法です:あなたはJamieD77の提案@そうに、以下の42日とリストの期間を探していると言います。これは「beginlistdateendlistdateの間の日数は42未満です」と表示されます。

@squillmanがYearからDayに変更することを示唆しているのと同じ違いと同様に、その相違点はDatePartです。あなたはLess Than<を望んでいました。

0

ヒントは、レポートやプロジェクトでどのように優先されるかに依存します。

この例とSTARTDATEとendate両方が同じカレンダの週にある場合、週の戻り値は0

選択DATEDIFF(週、GETDATE()、GETDATE()+ 7)

あろう

システムに基づいて日曜日の週開始を検討しています。