die Daten in der Tabelle sind nicht alle um Mitternacht, aber Ihre NLS_DATE_FORMAT Einstellung zeigt, ist nicht die Zeit; und die implizite Konvertierung, die Sie gerade machen, sucht genau nach Mitternacht.
Wenn Sie das tun:
select to_char(last_update_date, 'YYYY-MM-DD HH24:MI:SS')
from table_test
where last_update_date >= date '2016-08-02'
and last_update_date < date '2016-08-03'
werden Sie die Zeit Teil eines jeden Wertes sehen. Das where
Klausel sucht nach einem Wert, der auf oder nach Mitternacht an dem Datum ist, das Sie angeben, und vor Mitternacht am nächsten Tag (obwohl Sie wahrscheinlich keine nach heute haben werden). Wenn du gerade getan hast:
select to_char(last_update_date, 'YYYY-MM-DD HH24:MI:SS')
from table_test
where last_update_date = date '2016-08-02'
oder in der Tat, wie Sie implizit tun:
where last_update_date = to_date('02-AUG-16', DD-MON-RR')
Sie keine Streichhölzer sehen, weil keiner der Wert von der ersten Abfrage zeigen die Zeit gefunden, als 00:00:00.
Sie sollten sich bei der Abfrage oder Anzeige von Daten nicht auf die Einstellung NLS_DATE_FORMAT Ihrer Sitzung verlassen. Es ist besser, immer to_char()
für die Anzeige zu verwenden - im letzten möglichen Moment - und to_date()
für Vergleiche, die format model Sie benötigen, oder using ANSI date literals, wie ich oben getan habe. (Sie sollten auch nicht auf andere NLS-Sitzungen antworten. In diesem Fall gehen Sie auch davon aus, dass Ihre NLS_DATE_LANGUAGE mit AUG
übereinstimmt).
Was ist der Datentyp dieses Feldes? –
Überprüfen Sie das Datumsformat für die Spalte "last_update_date". – MMK
ist es date type .. –