2017-05-30 13 views
0

Meine Datumsspalte wird als CHAR und im JJJJMMTT-Format gespeichert. Die Zeichenfolge, die ich aus dieser Spalte suchen muss, ist im Format MM/TT/JJJJ. Wie könnte ich es zu JJJJMMTT ändern? Auch wenn meine parametr auf die Abfrage NULL übergeben ich beinhalten nicht die DOB-Suche in der WHERE-KlauselZeichenfolge von MM/TT/JJJJ in JJJJMMTT konvertieren

select * 
from ona 
    left join mnv on ona.xyz = mnv.xyz 
where (coalesce(to_date(mnv.DOB,'YYYYMMDD'),to_date('1901-01-01','YYYY-MM-DD')) OR '{BirthDate}' IS NULL) 
+0

ist die Konvertierung überhaupt nicht möglich? Wie umgekehrt und dann die Positionierung ändern – user7822440

Antwort

3

Es ist nicht zum Speichern von Datumsangaben als Zeichenfolge vorgeschlagen, vor allem aufgrund dieser besonderen Grund. Versuchen Sie also, Ihren Spaltentyp zu ändern, um dies in Zukunft zu vermeiden.

Jetzt können Sie es vergleichen, indem Sie beide Strings bis heute mit to_date Funktion konvertieren.

select something from some_table where 
to_date(date_Column,'YYYYMMDD')=to_date(search_value,'MM/DD/YYYY'); 

Wie Sie in den Kommentaren gefragt, es ist möglich, es zu tun, indem die Saiten Type untersucht auch aber ich denke, von Daten zu vergleichen wäre schneller und weniger anfällig für Ungenauigkeiten.

Aktualisieren Sie nach dem Anzeigen Ihrer Abfrage.

Sie konvertieren BirthDate auf dem neuesten Stand und es gibt auch keine = in Ihrer Abfrage zu vergleichen. Angenommen, dass BirthDate eine Zeichenfolge mit MM/DD/YYYY Format ist, verwenden Sie etwas wie unten.

select * from ona left join mnv on ona.xyz = mnv.xyz 
where 
to_date(mnv.DOB,'YYYYMMDD') = to_date(BirthDate,'MM/DD/YYYY') 
and mnv.DOB is not null 
and BirthDate is not null. 
+1

ODER '{BirthDate}' ist NULL in meiner Where Is-Klausel soll die Suche nach dem Datum in der Abfrage auszuschließen, wo der Parameter NULL ist – user7822440

+0

Das ist eigentlich besser. – Utsav

+1

(Mnv.DOB = coalesce (to_date (Datum_Column, "YYYYMMDD"), to_date ('1901-01-01', 'JJJJ-MM-TT')) ODER '{BirthDate}' ist NULL). to_date wirft einen Fehler, Skalarfunktion wird nicht erkannt. – user7822440