2016-04-18 4 views
-1

Ich versuche, eine Abfrage zu erstellen, die die Eigenschaften anzeigen wird, die verkauft wurden und für weniger als 6 Wochen auf dem Markt waren. In der Auflistungstabelle gibt es BeginListDate und EndList Date.Ich schreibe eine Where-Klausel-Abfrage

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

aber diese Abfrage ist falsch. Ich bin nur verwirrt darüber, wie man eine Where-Anweisung schreibt, in der nur diejenigen berücksichtigt werden, die weniger als 6 Wochen auf dem Markt waren.

+0

Dies ist ein großartiger Ort zum Starten: 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 Sehen Sie sich das Argument datepart an. Spezifisch "Tag". – squillman

+4

Datiert (Tag, BeginListDate, EndListDate) <42 meinst du? – JamieD77

Antwort

0

einfach zu erarbeiten auf @ JamieD77 ist sehr korrekt Kommentar ...

Ihren Zustand:

DATEDIFF(YEAR,BeginListDate, EndListDate) >42 

sagt "Die Anzahl der Jahre zwischen den BeginListDate und den EndListDate größer ist als 42". Das ist eine verdammt lange Liste. Sie sagen, Sie für den in der Liste Zeitraum suchen, um weniger als 42 Tage, so @ JamieD77 Vorschlag zu:

Datediff(day,BeginListDate, EndListDate) < 42 

ist der richtige Weg zu gehen. Dies sagt "Die Anzahl der Tage zwischen beginlistdate und endlistdate ist weniger als 42."

Der Unterschied hier ist die DatePart als @squillman schlug vor, von zu Day sowie die Ungleichheit selbst zu ändern. Sie wollten Less Than, <.

0

Hinweis aber hängt davon ab, wie Sie in Bericht oder Projekt bevorzugen würden.

dieses Beispiel, und wenn beide startdate und EnDate in der gleichen Kalenderwoche sind, wäre der Rückgabewert für Woche 0.

wählen DATEDIFF (Woche, getdate(), getdate() + 7)

sein

es wurde in Betracht gezogen, Woche Start für Sonntag basierend auf System.