2017-11-02 1 views
0

Ich versuche CAST() Funktion auf meine datetime und NULL Funktion zu verwenden.Cast-Funktion in SQL-Abfragen

Meine Frage ist wie folgt:

where [closed_at] = '' or Cast ([closed_at] as datetime) > = '09-01-2011 00:00' 

    and [class_name] in ('Job' ,'Education'); 
+1

Und verwenden ??? Hast du eine Frage? –

+0

und wenn Sie eine Frage haben - geben Sie bitte an, welche rdbms Sie verwenden (fügen Sie ein Tag hinzu) –

+1

Der Aufruf von 'CAST' in einer Spalte wird dazu führen, dass es alle Indizes ignoriert. Das ist neben dem Problem Ihrer konstanten Zeit Zeichenfolge in einem mehrdeutigen Format. Wenn Sie Glück haben, wird 'closed_at' in einem SARGable (normalerweise ISO) Format sein, so dass Sie es nur mit einem String abfragen können, bis Sie den zugrundeliegenden Typ in der Tabelle behoben haben. Außerdem bin ich ein wenig verdächtig, dass Ihre Boolesche Logik nicht das tut, was Sie wollen - wenn Sie 'AND' und' OR' mischen, setzen Sie Klammern um sie, um die Absicht zu demonstrieren. –

Antwort

0

Sie

Bedingung IS NULL
where ([closed_at] is NULL or Cast ([closed_at] as datetime) > = '09-01-2011 00:00') and [class_name] in ('Job' ,'Education'); 

oder

where Cast (ISNULL([closed_at],'09-01-2011 00:00') as datetime) > = '09-01-2011 00:00') and [class_name] in ('Job' ,'Education');