Oracle Timestamp-Konvertierung mit Datums -
Vorausgesetzt, dieses hat eine einfache Lösung, aber ich kann es nicht finden.
Ich versuche, eine gewisse Logik auf ein Datenfeld in Oracle. Mein Wunsch ist es, nehmen Sie ein DATUM-Feld und subtrahieren von X Stunden aus.
Zum Beispiel: SELECT A.MyDATE - 100 Hours from dual;
allerdings brauche ich ein Ergebnis in einer timestamp-format "YYYY-MM-DD hh:mm".
Ich habe versucht CAST(A.MyDATE as TIMESTAMP) - NUMTODSINTERVAL(100/24,'day')
aber es hat nicht funktioniert.
Fand ich heraus, dass das Problem ist, dass die MyDATE-Feld, wenn Sie gewirkt wird, um einen Zeitstempel enthält immer noch einige Rest-Zeit-Elementen. Wie kann ich das zurücksetzen dieser??
Dank!
- Definieren Sie zuerst "hat nicht funktioniert". Was war das Ergebnis, das Sie bekommen haben? Was war das Ergebnis, das Sie erwartet? Wenn Sie sprechen über die "Rest-Zeit-Elemente", sind Sie versucht, zu subtrahieren Sie 100 Stunden von Mitternacht an welchem Tag
MyDate
ist, anstatt 100 Stunden, egal aus welcher ZeitMyDate
hat? Welche Datentypen möchten Sie Ihre Abfrage zurückgeben? Die Abfrage, die Sie geschrieben gibt einetimestamp
aber wenn Sie reden wollen, einem bestimmten format, das bedeutet, dass Sie wollen, um wieder einevarchar2
. - Sorry für nicht deutlich genug. Wenn MyDate war
2013-01-15
und ich hoffte zu bekommen2013-01-10 20:00
als Ergebnis. Ich bin nicht immer dieses - ich bin immer so etwas wie2013-01-10 21:49
. Ich fand heraus, dass 'MyDate' bei der Konvertierung in einen timestamp halten, Stunden und Minuten anstelle von 00:00 Uhr in es - nicht sicher, warum. ALSO... ich bin versucht, zu null zu der Zeit Teil von MyDate nach timestamp-Konvertierung, aber ich weiß nicht, wie es zu tun.
InformationsquelleAutor NEW2WEB | 2013-02-08
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie einfach tun dies mit der Subtraktion:
Konvertieren zu varchar:
Und, wenn Sie wollen, um loszuwerden, diese lästigen mal auf das Datum:
trunc
das Datum, vor dem Abzug nicht nach. Ansonsten, in der Sie geschrieben, Sie würde sich2013-01-10 00:00:00
eher als2013-01-10 20:00:00
wennMyDate
war2013-01-15 01:49:00
.Formate und Termine in meinem Beispiel kann geändert werden, um andere Formate und Termine:
In Oracle, eine
DATE
hat immer einen Tag und eine Zeit-Komponente. Je nachdem, welches Werkzeug Sie verwenden, und Ihre SitzungNLS_DATE_FORMAT
ist es durchaus möglich, dass das tool möglicherweise nicht angezeigt, die Zeit-Komponente, wenn Sie die Daten anschauen. Aber das ist einfach eine display-Frage, es hat keine Auswirkungen auf die tatsächlichen Daten.Wenn Sie wollen, um zu subtrahieren 100 Stunden von Mitternacht des Tages, an
MyDate
stelltDiese zurück
DATE
. Wenn Sie zurückkehren möchten, eine Zeichenfolge in einem bestimmten formatBeachten Sie, dass ich gehe mal davon aus, dass es war ein Tippfehler in deiner Frage. Ich nehme an, Sie möchten die Anzeige der Minuten nach der vollen Stunde (
mi
) eher als das Monat (mm
).Ich bin versucht zu Holen die Datensätze, die älter als 30 Tage (ab Mod_date) und ich bin mit der folgenden Abfrage und es kehrt alle Daten, und ich will nur 30 Tage alten Daten.
Beispiel :- Mod_date 03-NOV-12 12.00.00.000000000 BIN
Abfrage :-
wählen Sie Mod_date von fil_cnfact wo Mod_date <= DATEPART -30, um durch Mod_date asc ;