2017-11-13 3 views
1

Als Teil meiner Abfrage möchte ich die Ergebnisse filtern, um nur die zwischen einem festgelegten Datumsbereich anzuzeigen, jedoch ist dieser Datumsbereich dynamisch, basierend auf einem Ereignis.Zwischen dynamischen Daten

Zum Beispiel:

WHERE date d 
    BETWEEN '2017-01-01'   -- just a sample fixed date 
    AND DATEADD(D, CONTACT_DATE, -1) -- to show a day before Contact Date 

Im Grunde nur versuchen, festzustellen, ob es eine andere CONTACT_DATE war in diesem Jahr, mit Ausnahme des Tages des tatsächlichen Kontakts.

Ich weiß, es könnte andere Möglichkeiten, dies zu tun, aber ich frage mich, ob ich eine Abfrage mit der aktuellen Logik optimieren kann.

ERROR:

Argument data type datetime is invalid for argument 2 of dateadd function.

+1

Sie einfach fehlt 'ZWISCHEN .... UND. ..' –

+0

Sorry, das war ein Tippfehler von meinem Ende. Ich habe das dazwischen und habe gerade das 'AND' eingeschlossen. – kazzi

Antwort

3

Sie die Parameter gemischt. Die Syntax ist folgende:

DATEADD(D, -1, CONTACT_DATE) 

Siehe die Dokumentation hier:

DATEADD (datepart , number , date) 

Sie sollten es so weit verändern https://msdn.microsoft.com/de-de/library/ms186819(v=sql.120).aspx

+0

Peinlich. Habe es mit meinem DATEDIFF gemischt. Ich bekomme jetzt 0 Ergebnisse, aber zumindest keinen Fehler. Muss meine Logik besser verfeinern. Vielen Dank – kazzi

2

Es sollte:

DATEADD(D, -1, CONTACT_DATE) 
Verwandte Themen