Oracle-Standard-Datumsformat ist JJJJ-MM-TT, WARUM?
Oracle Standard-Datumsformat ist YYYY-MM-DD. Das bedeutet, wenn ich tun:
select some_date from some_table
...Ich verlieren der Zeit Teil von meinem Termin.
Ja, ich weiß, Sie können "Update" dieses mit:
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Aber im ernst, warum nicht die über dem Standard? Vor allem in einem DBMS, wo die beiden primären Zeit-tracking-Daten-Typen (DATE-und TIMESTAMP) beide haben eine Zeit-Komponente, enthält (mindestens) eine Genauigkeit von bis zu 1 Sekunde.
InformationsquelleAutor der Frage Aaron Fi | 2009-12-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie mit dieser Abfrage erzeugen einer Eingabe-Datei für Ihr Data-Warehouse ist, dann müssen Sie zum formatieren der Daten entsprechend. Im wesentlichen in diesem Fall sind Sie konvertieren das Datum (die eine Zeit-Komponente) zu einem string. Sie müssen explizit formatieren Ihren Text oder ändern Sie Ihre nls_date_format, um den Standard. In der Abfrage können Sie einfach tun:
InformationsquelleAutor der Antwort Doug Porter
Sind Sie sicher, dass Sie nicht verwirrend Oracle-Datenbank mit Oracle SQL-Developer?
Die Datenbank selbst hat kein Datum-format, das Datum kommt aus der Datenbank in roher form. Es liegt an der client-software zu Rendern, und SQL Developer hat YYYY-MM-DD als Standard-format, das neben nutzlos, da Stimme ich zu.
edit: Wie bereits unten kommentiert, SQL Developer können neu konfiguriert werden, um das DATUM anzuzeigen-Werte richtig, es hat nur schlechte Standardwerte.
InformationsquelleAutor der Antwort skaffman
Format JJJJ-MM-TT ist Teil Nach ISO8601 ein standard für den Austausch von Datum (und Zeit) Informationen.
Es ist sehr mutig von Oracle zu erlassen ISO standard wie hier, aber zur gleichen Zeit, seltsam, Sie hat nicht den ganzen Weg gehen.
Leute im Allgemeinen widerstehen, etwas anderes, aber es gibt viele gute International Gründen.
Ich weiß, ich sage revolutionäre Dinge, aber wir sollten alle umarmen ISO-Normen, auch wir tun es ein wenig in einer Zeit.
InformationsquelleAutor der Antwort pavium
Den größten PITA von Oracle ist, ist nicht ein Standard-Datum-format!
In Ihrer installation von Oracle die Kombination von Sprachen und installieren Optionen gepflückt hat (sehr vernünftig!) YYYY-MM-DD-format für die Ausgabe von Daten. Eine andere installation könnte abgeholt haben "DD/MM/YYYY" oder "YYYY/DD/MM".
Wenn Sie möchten, dass Ihre SQL-portable auf einem anderen Oracle-Website, die ich empfehlen würde, Sie immer wickeln Sie ein
TO_CHAR(datecol,'YYYY-MM-DD')
oder ähnliche Funktion, um jede Spalte Datum Ihrer SQL-oder alternativ legen Sie die defualt-format-sofort nachdem Sie eine Verbindung mitoder ähnliches.
InformationsquelleAutor der Antwort James Anderson
Es ist nie klug, sich verlassen auf Standardwerte gesetzt werden, um einen bestimmten Wert, IMHO, ob es für Datumsformate, Währung, Formate, Optimizer-Modi oder was auch immer. Sie sollten immer den Wert des Datum-format, die Sie brauchen, in der server, den client oder die Anwendung.
Insbesondere, verlassen Sie sich niemals auf Standardeinstellungen bei der Konvertierung von Datums-oder numerische Daten-Typen für die Anzeige, denn eine einzige änderung an der Datenbank kann brechen Sie Ihre Anwendung. Verwenden Sie immer eine explizite Konvertierung format. Für Jahre arbeitete ich auf Oracle-Systeme, auf denen die out-of-the-box-Standard-Anzeige von Datum format MM/DD/RR, die fuhr mich verrückt, aber wenigstens hat mich gezwungen, immer eine explizite Konvertierung.
InformationsquelleAutor der Antwort David Aldridge
Meisten der IDE konfigurieren Sie die Standard-Maske für eine Art von Daten, wie Datum, Währung, Dezimaltrennzeichen etc.
Wenn Ihr mit Oracle SQL Developer:
Werkzeug - > Einstellungen - > Datenbank > NLS
Datum, Format: JJJJ-MM-DD HH24:MI:SS
InformationsquelleAutor der Antwort Fabio Farath
Dies ist ein "problem" auf der client-Seite, nicht wirklich ein Oracle-problem.
Es ist die client-Anwendung, die Formate und zeigt das Datum auf diese Weise.
In Ihrem Fall ist es die SQL*Plus-was bedeutet diese Formatierung.
Anderen SQL-clients haben andere Standardwerte.
InformationsquelleAutor der Antwort a_horse_with_no_name
Einen DATUM-Wert gemäß der SQL-standard YYYY-MM-DD. So, obwohl Oracle speichert die Zeit, die Informationen, meine Vermutung ist, dass Sie die Anzeige den Wert in einer Weise, die kompatibel ist mit dem SQL-standard. In den standard, dort ist der TIMESTAMP-Datentyp enthält Datum und Zeit info.
InformationsquelleAutor der Antwort Harold L
Ich bin kein Oracle-user (gut, in letzter Zeit jedenfalls), ABER...
In den meisten Datenbanken (und in präziser Sprache), ein Datum, keine Zeit. Mit einem Datum bedeutet nicht, dass Sie für ein bestimmtes zweite an diesem Tag. Im Allgemeinen, wenn Sie möchten, eine Uhrzeit sowie ein Datum, das nennt man timestamp.
InformationsquelleAutor der Antwort Nick Bastin
Oracle hat sowohl das Datum und Timestamp-Datentypen.
Laut Oracle-Dokumentation gibt es Unterschiede in der Größe der Daten zwischen Datum-und Zeitstempel, also wenn die Absicht zu haben ein Date-Feld ist es sinnvoll, das Datum der Formatierung. Auch, "Es muss nicht in Bruchteilen von Sekunden oder eine Zeit-zone." - es ist also nicht die beste Wahl, wenn timestamp-Informationen erforderlich ist.
Dem Datum-Feld kann leicht formatiert werden, um die Zeit zeigen-Komponente in der Oracle SQL Developer - Datum Abfrage lief im PL/SQL Developer zeigt die Zeit an, aber nicht in einem Oracle SQL-Developer. Aber es wird nicht zeigen, die Sekundenbruchteile oder die time-zone - für diese müssen Sie die Timestamp-Datentyp.
InformationsquelleAutor der Antwort razvanone
Grund:
wenn Sie eine Spalte von Daten mit einem Zeitstempel, der _MOST_IMPORTANT_ information ist die Jahr. Wenn die Daten schon in der db für zehn Jahre, das ist wichtig zu wissen. so Jahr kommt zuerst.
macht es Sinn, dass Monat kommen würde, dann Tag, Stunde, minute. Objektiv, diese sind die logische Folge für die Zeitdaten angezeigt werden.
ist es auch sinnvoll, dass, wenn Sie gehen, um die Daten anzeigen, die Sie standardmäßig angezeigt werden sollten nur die am meisten signifikanten Teil der Daten, so dass standardmäßig nur Y-M-D. alles andere KANN angezeigt werden, aber nicht überladen Sie Ihre sql-Bericht von Standard.
Sortieren nach Datum ist logisch, wenn Sie die Anzeige Y-M-D weil es ist fortlaufend. Computer sind gut in sequentiellen, und es sieht logisch.
schließlich. Ihre Voreingenommenheit zu wollen-M-D-Y ist dein bias. Nicht jeder, auch in den USA wird dieses format verwendet. So verwenden Sie den logischen format und seien Sie nicht empört, wenn andere sich dazu entscheiden werden, logisch standardmäßig.
(Ich bin UNS geboren, und ich repräsentieren nicht Oracle. Ich kann mir jedoch denken, für mich)
InformationsquelleAutor der Antwort hollington
Antwort auf Ihre Frage, ist, WARUM die Standard-Datum anzeigen nicht Teil der ZEIT, die einzige Antwort, die ich finde, ist
Oracle-teams bestehen aus FAULEN Entwicklern oder Verantwortlichen 🙂
Warum ?
Da DATUM, ZEIT und DATETIME Datentypen existieren in SQL-und Oracle-noch nicht implementiert !!!
Es ist eine Schande für Oracle.
Aber die richtige Antwort zu deinem problem ist nicht zu definieren, eine FIX Standard-format, aber eine SIGNIFIKANTE Standard-format, das die Anzeige nur signifikante Ziffern so, dass die DATE -, TIME-oder DATETIME-Werte angezeigt (standardmäßig) enthält immer alle wichtigen stellen.
Beispiel:
Das Prinzip ist einfach.
Alle Ziffern als Teil DATUM werden immer angezeigt, als GANZZAHLIGEN Teil von float-Zahl. Für den Teil der ZEIT, nur erhebliche Teil wird dargestellt, wie Sie für die Nachkommastellen bei float-Zahl.
Natürlich, für die ZEIT geben (nur HH:MM:SS), die DATE-Teil wird nie angezeigt.
InformationsquelleAutor der Antwort schlebe