2012-04-03 2 views
1

Gibt es eine Möglichkeit, nur Stunden in einem DateTime-Feld zu aktualisieren? Wenn nicht, wie aktualisiere ich den Zeitteil in Oracle? Ich habe dies versucht->Wie aktualisiert man nur den "Stunden" -Teil in einem Datetime-Feld in Oracle?

update tab_name 
set C_Name=to_date('04/03/2012 00:31:00','MM/DD/YYYY HH:MI:SS AM') 
where C_Name1=10484; 

hat nicht funktioniert, wie ich '00' in Stunde Teil aktualisieren.

+0

Willkommen bei Stack Overflow! Ich habe mir die Freiheit genommen, deine Frage für dich zu formatieren. In der Zukunft formatieren Sie bitte Ihre Fragen, bevor Sie sie veröffentlichen. –

+0

Ist 'C_NAME' ein DATUM? Wie würde dies nur die Zeit aktualisieren? Möchten Sie, dass der Tag-Teil der Zeichenfolge ignoriert wird (dh aktualisieren Sie 'C_NAME' an dem Tag, an dem' C_NAME' aktuell um 12:31:00 Uhr ist?) –

+0

yeah Justin, C_Name ist ein DateTime-Feld. Nein, ich nicht will etwas hier ignoriert werden, wie du sagtest 12:31:00 hier nur "12" muss durch "00" ersetzt werden, es sollte 00:31:00 sein – palak

Antwort

1

Wenn ich wüsste, dass ich nur einen Teil der Zeit aktualisieren möchte, würde ich wahrscheinlich in eine Zeichenfolge mit dem Wert konvertieren, den ich an der entsprechenden Stelle haben möchte, und dann zurück in ein Datum konvertieren. Sagen, dass ich die Minuten sein „31“ wollte:

update tab_name 
set C_Name= 
    to_date( 
    to_char(C_Name, 'MM/DD/YYYY HH24:"31":SS'), 
    'MM/DD/YYYY HH24:MI:SS' 
) 
where C_Name1=10484; 

Wenn Sie ändern möchten den Zeitanteil, bezogen auf den aktuellen Wert (hinzufügen 2 Stunden oder subtrahieren 3 Sekunden, zum Beispiel), dann gibt es einige Möglichkeiten für Datum Arithemie. Die Oracle-Dokumentation ist sehr gut für diese Dinge.

+0

Adam, danke für die Antwort, aber das hat nicht funktioniert 't Arbeit für mich, wenn mir das gefallen hat ---> Update tab_name gesetzt C_Name = to_date (to_char (C_Name, 'MM/TT/JJJJ" 00 ": HH: SS'), 'MM/TT/JJJJ HH24: MI: SS ') wo C_Name1 = 10484; ... Stunde habe ich es "00" gemacht, es immer noch als "12" speichern ... Irgendeine Lösung dafür ??? – palak

+0

@palak - Sind Sie sicher, dass Sie es nicht nur im 12-Stunden-Zeitformat anstatt im 24-Stunden-Format anzeigen? Wenn Sie die Uhrzeit mit der Maske 'HH24' anzeigen, wird sie im 24-Stunden-Format angezeigt, also zwischen Mitternacht und 1 Uhr morgens, die Stunde ist" 00 ". Wenn Sie die Zeit mit der 'HH'-Formatmaske anzeigen, wird sie im 12-Stunden-Format angezeigt, so dass die Stunde immer zwischen 1 und 12 liegt. In der Datenbank werden Datumsangaben nicht in einem Format gespeichert immer in demselben nicht-menschenlesbaren gepackten Binärformat gespeichert. Ein Datum muss in eine Zeichenkette umgewandelt werden, damit es lesbar wird. –

+0

Justin, In UI zeige ich LocalTime an, aber in der Datenbank speichere ich es im 12-Stunden-Format, jetzt ist das Hauptproblem-> Wenn datetime zwischen 6 und gespeichert wird 6.30 Uhr, in UI wird es als PM angezeigt. Ich denke, in der Datenbank muss ich es als HH24 machen, wie du sagtest. – palak

Verwandte Themen