Frage

Ich bin die Ausführung der folgende Abfrage, Sie gibt mir die leeren row.However gibt es Aufzeichnungen in der Tabelle mit upd_time = '12 -MAR-08'.I versteht nicht, warum es nicht das Datum der Rückkehr '12 - MAR-08'.Please helfen Sie mir ??

SELECT br_data.upd_time FROM BANKREC.br_data wo br_data.upd_time = '12 -MAR-08' ;

War es hilfreich?

Lösung

i Zugang zu einer Oracle-Datenbank nicht im Moment, aber ich erinnere mich to_char verwenden.

Versuch

SELECT br_data.upd_time FROM BANKREC.br_data where to_char(br_data.upd_time, 'DD-MON-YY') = '12-MAR-08';

Andere Tipps

Es ist wahrscheinlich, dass upd_time nicht genau 12-MAR-08 ist. Das Datumsformat wird nicht die Zeit Komponente zeigt, aber es ist wahrscheinlich dort (DATE-Datentyp in Oracle sowohl Datums- und Zeitkomponenten enthalten kann).

Versuchen Sie, diese (es können Sie die Zeitkomponenten sehen):

alter session set nls_date_format='DD-MON-YY HH24:MI:SS';

SELECT br_data.upd_time FROM BANKREC.br_data
where br_data.upd_time >= to_date('12-MAR-08','DD-MON-YY')
and br_data.upd_time < to_date('13-MAR-08','DD-MON-YY');

Ist es das gleiche, wenn Sie ein

tun
SELECT br_data.upd_time FROM BANKREC.br_data 
       where trunc(br_data.upd_time) = '12-MAR-08';

Es könnte sein, dass die upd_time kein Datum, sondern ein Zeitstempel, so dass es zum Beispiel tatsächlich enthält '12 -MAR-08 5.30' , das nicht dasselbe sein würde. trunc() entfernt die Zeit Teil des Zeitstempels.

Da es keinen Fehler zurückgeben, nehme ich an, dass es das Datum korrekt analysiert, aber sonst könnten Sie versuchen, mit to_date('12-MAR-08','DD-MON-YY')

Sie sollten Oracle-Funktion benutzen, um Ihre Zeichenfolge richtig in ein Datum zu konvertieren mit

to_date('12-MAR-08', 'DD-MMM-YY')

Dann muss man berücksichtigen, dass die Oracle „Date“ Datentyp auch Zeitinformationen auf die nächste Sekunde enthält. Dies bedeutet, dass das Datum, das im ersten Schritt aufgebaut wurde, ist tatsächlich Mitternacht am 12. März. Sie müssen also sicherstellen, dass die upd_time bis Mitternacht abgeschnitten wird:

trunc(upd_time, 'DAY') = to_date('12-MAR-08', 'DD-MMM-YY')

Ihre vollständige Abfrage wird

SELECT br_data.upd_time 
FROM BANKREC.br_data 
WHERE trunc(upd_time, 'DAY') = to_date('12-MAR-08', 'DD-MMM-YY');

Es gibt auch andere Möglichkeiten, um diese Katze zu Haut (Sie Ihre updTime Spalte zu einem richtigen Zeichen Feld mit to_char(upd_time, 'DD-MMM-YY') übertragen könnte), aber es ist in der Regel ratsam, die Daten machen Sie nach ähnlichem suchen, was Sie in der Datenbank finden können als das erhöht Ihre Chancen auf einen Index für die Suche verwendet wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top