WENIGER ALS IN Oracle SQL

7
%Vor%

Ich habe eine Anfrage wie diese

%Vor%

aber ich bekomme keine Ergebnisse. es funktioniert nur, wenn todate 09-Jun-2010 ist ...

d. Mein equalto -Operator funktioniert nicht richtig.

warum ist das so?

    
Andromeda 08.06.2010, 11:41
quelle

2 Antworten

21

In Oracle ist ein DATUM ein Zeitpunkt. Es hat immer eine Zeitkomponente mit einer Präzision zur Sekunde. todate('08-Jun-2010', 'dd-Mon-yyyy') ist in Oracle dasselbe wie todate('08-Jun-2010 00:00:00', 'dd-Mon-yyyy hh24:mi:ss') . Wenn Sie also Zeilen bis zu diesem Datum auswählen, erhalten Sie an diesem Tag keine Zeile mit einer Zeitkomponente ungleich 00:00 .

Wenn Sie alle Zeilen bis einschließlich 08-JUN-2010 auswählen möchten, würde ich Folgendes vorschlagen:

%Vor%

oder

%Vor%

Hinweis - Ich habe Ihr Datumsformat korrigiert: Sie müssen MON verwenden, wenn Sie den abgekürzten Monatsnamen verwenden möchten. Ich würde vorschlagen, stattdessen MM zu verwenden, damit Sie keinen Fehler erhalten, wenn jemand seine Client-Einstellungen ändert ( NLS_DATE_LANGUAGE ). Außerdem bevorzugen Sie die Verwendung von YYYY anstelle von YY .

    
Vincent Malgrat 08.06.2010, 11:48
quelle
13

Überprüfen Sie dies,

%Vor%

Es ist gleich 2010-06-08 00:00:00 . Beachten Sie die Zeit.

Der updated_date hat Zeitanteil. Um sie einzuschließen, verwenden Sie bitte diese Abfrage,

%Vor%

Die Standardfunktion TRUNC function for date entfernt die Uhrzeit.

Siehe Trunc

    
Sujee 08.06.2010 11:51
quelle

Tags und Links