Update Stunden im 24-Stunden-datetime-Feld in einer oracle-Datenbank
Ich versuche, update-Zeit im datetime-Feld als
UPDATE table_name
SET col_name=to_DATE('04/02/2012 00:12:00','MM/DD/YYYY HH24:MI:SS')
WHERE col_name1='rer';
Nach der Aktualisierung in der db,Die output
ist wie diese
'04/02/2012 12:12:00'
Extra 12
es ist hinzufügen, die in Stunden-Bereich,
wie kann ich diese nicht hinzufügen zusätzliche 12
zu Stunde Feld???
Wie wollen Sie die Ausgabe anzuzeigen (Welche Abfrage verwendest du)?
marcin,Nur eine select-Anweisung,die ich verwenden, wie"select col_name from tab_name" follwed durch die where-Bedingung.
marcin,Nur eine select-Anweisung,die ich verwenden, wie"select col_name from tab_name" follwed durch die where-Bedingung.
InformationsquelleAutor palak | 2012-04-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die UPDATE-Anweisung ist OK. Es fügt keine "extra 12", um Ihre Spalte Datum. Das einzige problem, das Sie haben, ist mit der Anzeige der Werte. Die Spalte Datum nicht speichern Ihre Werte in einem bestimmten format in der Form 'MM/DD/YYYY HH24:MI:SS', es enthält binäre Daten. Wenn Sie der Abfrage die Tabelle mit solchen Aussage wie
wird das Datum angezeigt, die unter Verwendung Ihrer Sitzung NLS_DATE_FORMAT, das ist wahrscheinlich 'MM/DD/YYYY HH:MI:SS'. In diesem format Ihr Datum, wird angezeigt als "04/02/2012 12:12:00'. Wenn Sie führen Sie folgende Anweisung in Ihrer Sitzung
werden und dann die Abfrage
sehen Sie das Datum im gewünschten format. Andere Möglichkeit ist die Verwendung TO_CHAR wie
Welche Tools verwenden Sie zum ausführen dieser Abfragen (SQL*Plus? PL/SQL Entwickler? SQL Developer? andere?)
InformationsquelleAutor Marcin Wroblewski
Nur eine Vermutung, es könnte sich um einen Fehler in der Zeichenfolge verwendet, um die Ausgabe zu formatieren, mit dem '24' fehlt, 'HH24'. Da Sie nur das format-string für die Eingabe (und nicht der Ausgang) oben aufgeführt sind, kann ich nicht sagen, ob das der Fall ist. Hier ist ein Beispiel, was ich meine.
Abfrage 1:
Ergebnis 1:
Abfrage 2:
Ergebnis 2:
Klar zu sein, ich denke die Lösung für dein Problem kann es sein, überprüfen Sie das format, in Ihrer select-Anweisung, und wählen Sie Ihre Daten wie diese:
hh:mi:ss
und Zeit00:12:00
es mirORA-08149 hour must be between 1 and 12
Ich meine nicht, dass er mit einem format-string wie
hh:mi:ss
in seinem update-statement, ich nehme an, er möglicherweise verwenden Sie in einer select-Anweisung nicht oben gezeigt wird. In diesem Fall hätte er die richtige Zeit gespeichert, die in seiner Tabelle, aber es wäre falsch formatiert, wenn er mit der select-und to_char, um es anzuzeigen. Ich glaube nicht, dass Sie bekommen, ORA-08149 auf eine Aussage wieselect to_char(#dateTimeField#, 'mm/dd/yyyy HH:mi:ss') from #tableName#
:ja, wir werden nicht die oben genannten Fehler während
selecting
aber wie erwähnt von ihm ,er braucht, um aktualisieren Sie die Anweisung mit der Zeit00:12:00
so ,dass ein update fehlschlägt und thrw den oben genannten Fehler.In meinem FallHH24:MI:SS
ist für mich zu arbeiten und immer das gewünschte Ergebnis04/02/2012 00:12:00
.Ich denke, dies muss in Zusammenhang mit dem parameter NLS_DATE_FORMAT inv$parameter
data dictionary.Nie erwähnt er immer eine Ausnahme beim ausführen der update. Das problem ist, dass seine
output
sieht falsch aus. Ich war nur raten, vielleicht ist er der Formatierung der Ausgabe falsch. Wenn er verwendethh24:mi:ss
auf dieupdate
aberhh:mi:ss
auf dieselect
es geben kann, das problem erwähnt. Aber ich Stimme zu, es kann sein das etwas ganz anderes.:Das ist, was ich eines sagen ,ich bin immer diese Ausnahme, während putting
hh:mi:ss
.Vielleicht werden Sie falsch interpretiert, was ich sagte .Sowieso brauchen, um herauszufinden, die Lösung .InformationsquelleAutor user506069