2013-04-03 16 views
6

Wie Systemdatum in TT/MM/JJJJ in Tabelle mit Oracle 10g einfügen?Systemdatum in Oracle einfügen

Bei Verwendung der folgenden Abfrage wird das Systemdatum als 03/04/0013 eingefügt. Ich brauche 03.04.2013. Können Sie mir helfen, dieses Problem zu lösen?

insert into GtTable 
values('111','Name',300,'Tour',to_date('02/04/2012','DD/MM/YYYY'),to_date(sysdate,'DD/MM/YYYY')); 

Wenn Sie aber '02/04/2012 'direkt einfügen, akzeptiert es genauso wie '02/04/2012'.

+0

Sind Sie sicher, dass es funktioniert? Hast du etwas wie "22/04/2012" versucht? Was ist 'nls_date_format' eingestellt? – hofmeister

Antwort

4

Wenn das letzte Feld auf dem Einsatz ein Datum Typ-Feld ist, sollten Sie keine Konvertierung auf SYSDATE müssen, so sollte die folgende Ordnung sein:

insert into GtTable 
values('111', 'Name', 300, 'Tour', to_date('02/04/2012','DD/MM/YYYY'), sysdate); 

Aber wenn es ein varchar Feld ist, das folgende funktionieren sollte:

insert into GtTable 
values('111', 'Name', 300, 'Tour', to_date('02/04/2012','DD/MM/YYYY'), to_char(sysdate, 'dd/mm/yyyy')); 
+0

Ich versuche, es zu verwenden, um das aktuelle Datum einzufügen, aber es gibt mir Datumsformat nicht erkannt Fehler to_date (SYSDATE, 'DD-MMM-YYYY') –

+0

@MRAND Ich denke, das Problem, das Sie bekommen, wurde von ** ABCade * abgedeckt * oben, in [dieser Kommentar] (https://stackoverflow.com/a/15779452/2156229) – warantesbr

12

Sie sollten

sysdate ist bereits ein Datum TO_DATE auf ein Datum nicht aktivieren, wenn Sielaufenmit ihm als der erste Parameter, Sie machen Oracle implizit in eine Zeichenfolge nach NLS_DATE_FORMAT konvertieren, die in Ihrem Fall wahrscheinlich YY und nicht YYYY enthält.

Ein Datum im Orakel ist eine Zahl, ein Datum und Zeit darstellt, ist es nicht ein „Format“ hat, wenn Sie sysdate ohne den Zeitwert Sie es so kürzen, müssen eingefügt werden soll:

insert into GtTable 
values('111','Name',300,'Tour',to_date('02/04/2012','DD/MM/YYYY'),trunc(sysdate)) 
+0

[Hier] (http://www.sqlfiddle.com/#!4/d41d8/9426) ist ein Beispiel für SQLFiddle –

0

TO_CHAR (SYSDATE, 'DD/MM/YYYY') KANN LÄSST SIE fügt Systemdatum als TT/MM/JJJJ ein, aber es ist kein Datumstyp mehr.

+1

Ich denke nicht, dass das eine gute Idee ist, denn wenn der Datentyp ein 'DATE' ist, konvertiert Orakel implizit den String in ein Datum gemäß nls_date_format und obwohl die 'to_char'-Funktion korrekt funktioniert, wird die Einfügung fehlschlagen ... siehe [Hier] (http://www.sqlfiddle.com/#!4/d41d8/9430) –

+0

Jahr, Sie haben Recht. Wenn nur als TT/MM/JJJJ angezeigt werden soll, kann to_char funktionieren. Wenn nur zum Einfügen, wenn diese Spalte Datentyp ist, wird die Einfügung fehlschlagen. Sie können to_date zurück, aber das ist ein bisschen dumm ... :) – Gentlezerg