Ich habe folgendes TABLE.Sample1
:Oracle SQL: Vergleich Extrahiert Date in Timestamp
Col1(varchar) | Col2(timestamp)
---------------------------------------
A | 08-NOV-16 09.59.52.000000000 AM
B | 08-NOV-16 10.05.12.000000000 AM
C | 09-NOV-16 10.05.12.000000000 AM
Angenommen, ich möchte alle Zeilen ein Datum im Format DD MON YYYY
gegeben werden.
Hier ist meine erste Abfrage:
SELECT *
FROM Sample1
WHERE CAST(Col2 as DATE) = TO_DATE('8 NOV 2016','DD MON YYYY');
Ich bin neugierig, warum diese Abfrage funktioniert nicht auf Gleichheit (=
) aber funktioniert auf Ungleichheiten (>
, <
, <=
, >=
, <>
) . Vergleiche ich hier nicht die gleichen Datentypen?
Ich endete mit TO_CHAR
Funktion, um diese Arbeit zu machen, aber es stellt sich die Frage, gibt es einen einfacheren oder direkteren Ansatz dazu?
SELECT *
FROM Sample1
WHERE TO_CHAR(CAST(Col2 as DATE)) = TO_CHAR(TO_DATE('8 NOV 2016','DD MON YYYY'));