Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Vergleichen Sie das Datum im SQL-Befehl

Nein. Datum/Zeitstempel hat kein Format . Oracle speichert die Datums-/Zeitstempel nicht in dem Format, das Sie sehen. Das angezeigte Format dient nur zur Anzeige Zweck. Das Datum wird intern in 7 Byte gespeichert, was das proprietäre Format von Oracle ist .

Natürlich könnten Sie. Sie könnten TRUNC verwenden was den Zeitteil abschneidet und nur den Datumsteil übrig lässt und der Datentyp als Datum verbleibt.

Zum Beispiel

SQL> SELECT TRUNC(SYSTIMESTAMP) my_tmstmp FROM DUAL;

MY_TMSTMP
----------
2015-05-29

Sie erhalten also die Benutzereingabe in diesem Format als String . Sie müssen zuerst konvertieren es in DATE mit TO_DATE und dann vergleichen.

Zum Beispiel

WHERE TRUNC(dt_column) < TO_DATE('05/29/2015 12:07:58', 'MM/DD/YYYY HH24:MI:SS')

Wie ich bereits sagte, wenn Sie den Zeitteil ignorieren möchten, wenden Sie TRUNC an .

Wenden Sie jedoch TRUNC an in der Datums-Spalte würde jeden regulären Index unterdrücken auf dieser Säule. Verwenden Sie aus Leistungssicht besser eine Datumsbereichsbedingung .

Zum Beispiel

WHERE dt_column
BETWEEN 
        TO_DATE('05/29/2015 12:07:58', 'MM/DD/YYYY HH24:MI:SS')
AND     
        TO_DATE('05/29/2015 12:07:58', 'MM/DD/YYYY HH24:MI:SS') +1