Oracle-datatyperrors

Ich versuche, einen Wert in den date datatyp einzufügen, indem ich einen Wert aus einer Quelltabelle auswähle, deren Spalte ebenfalls ein date datatyp ist. Ich habe die Spalte direkt ausgewählt, ohne eine Konvertierung mit der to_date function to_date , da beide die gleichen Typen sind, aber ich bekomme den folgenden Fehler:

 SQL Error: ORA-00932: inconsistent datatypes: expected DATE got NUMBER 00932. 00000 - "inconsistent datatypes: expected %s got %s" 

Ich hatte doppelt überprüft, Quellspalte hat keine Nullwerte.

 insert into Target(Targetdate) select to_date(Source.START_DATE,'yyyy-mm-dd') from Source 

Danke, dass du dir das angeschaut hast.

Solutions Collecting From Web of "Oracle-datatyperrors"

Ich nehme an, Sie versuchen, die data auf den Tag in der Zieltabelle abgeschnitten zu bekommen. Dies kann folgendermaßen geschehen:

 insert into Target(Targetdate) select trunc(Source.START_DATE,'DD') from Source 

BEARBEITEN

Dazzal erwähnt, dass dies die Standardoperation ist, wenn der zweite Parameter für TRUNC weggelassen wird, also ist dies sogar ein bisschen einfacher:

 insert into Target(Targetdate) select trunc(Source.START_DATE) from Source 

Das Problem mit Ihrer Abfrage war, dass Source.START_DATE ein date und keine characterfolge ist …

EDIT2

Wie es scheint, dass Sie datestrings in einem bestimmten Format erhalten möchten – was nichts mit dem datestyp zu tun hat und wie Thigs intern gespeichert werden – tun Sie das einfach:

 SELECT to_char(START_DATE,'YYYY-MM-DD' from Source; 
  • Oracle TRUNC

Sie haben angegeben, dass Sie eine datesspalte aus der Quellentabelle auswählen. Wenn es sich um eine datesspalte handelt, warum konvertieren Sie dann wieder in das date? Natürlich wird es auch Fehler geben ..

 insert into Target(Targetdate) select to_date(Source.START_DATE,'yyyy-mm-dd'), from Source 

Eingabeparameter der function 'to_date' ist 'string'

 to_date( string1, [ format_mask ], [ nls_language ] ) 

UPDATE1:

 alter session set nls_date_format = 'yyyy-mm-dd'; insert into Target(Targetdate) select to_char(Source.START_DATE,'yyyy-mm-dd') from Source 

"Beispiel für meinen Quellwert ist 11-JUN-13 und ich brauche einen Zielwert als YYYY-MM-DD wie kann ich das erreichen?"

Alle Oracle-data werden im selben internen Format gespeichert:

 SQL> select dump(sysdate) from dual; DUMP(SYSDATE) --------------------------------------------- Typ=13 Len=8: 221,7,1,3,10,22,8,0 SQL> 

Das Anzeigedatum hängt vollständig von den Standardwerten der Clientumgebung oder der Formatmaske ab, wenn TO_CHAR () verwendet wird.

Wenn beide Spalten den datatyp DATE haben, haben Sie Dinge kompliziert: Sie müssen die Werte nicht in INSERT umwandeln.

 insert into Target (Targetdate) select Source.START_DATE from Source 

Sie müssen nur eine Formatmaske anwenden, wenn Sie das Zieldatum von Target auswählen.