SQL server-Teilstring bis dato in einem wo caluse

Ich versuche, ein date in einem Varchar enthalten, um es mit getdate () in einer where-Klausel zu vergleichen. Die Variable varchar sieht immer so aus:

Zuletzt gesehen: MM / TT / JJ

Einige Beispieldaten:

Last Seen: 07/12/16 Last Seen: 08/01/16 Last Seen: 07/22/16 NULL NULL NULL NULL Last Seen: 07/28/16 

Umwandlung eines Varchars in datetime und finden die Tage Unterschied wie unten funktioniert:

 datediff(day,CAST(substring(CA_NOTE, 12, 8) as datetime), getdate()) as dayspassed 

Das Problem ist, wenn ich diese Codierung in der Where-Klausel, um das date zu Getdate () Ich bekomme immer den gleichen Fehler zu halten.

 where datediff(day,CAST(substring(CA_NOTE, 12, 8) as datetime), getdate()) > 90 

Msg 241, Ebene 16, Status 1, Zeile 3 Konvertierung fehlgeschlagen beim Umwandeln von date und / oder time von characterfolge.

Ich laufe SQL server 2014 Management Studio.

Bearbeitet, um Kommentare zu berücksichtigen

Der Vorschlag der Zieldaten von TRY_PARSE hat gearbeitet! Danke allen.

SQL weiß nicht, was mit getdate()-90 – subtrahieren 90 Tage zu tun? 90 Minuten? 90 jahre

Sie müssen eine function wie dateadd , zB

 where convert(varchar(30),cast(substring(CA_NOTE, 12, 8) as datetime),102) < dateadd(dd, -90, getdate()) 

Das Problem ist, dass du es immer noch in ein VARCHAR hast. Versuchen Sie es stattdessen:

 CAST(substring(CA_NOTE, 12, 8) as datetime)