Die Wahrheit über das Datumsformat der Oracle-Datenbank und seinen Funktionsmechanismus
Viele Artikel behaupten, dass das Standarddatumsformat von Oracle JJJJMMTT, TT/MM/JJJJ oder JJJJ-MM-TT ist. Dieses Missverständnis rührt jedoch daher, dass Oracle selbst kein vordefiniertes Datumsformat hat. Oracle speichert Datumsangaben intern als Binärwerte, die Jahr, Monat, Tag, Stunde, Minute und Sekunde darstellen.
Wenn Sie ein Datum mit einer Zeichenfolge wie „25-JAN-18“ in Oracle einfügen, versucht Oracle, die Zeichenfolge basierend auf dem Sitzungsparameter NLS_DATE_FORMAT in ein Datum umzuwandeln. Der Wert von NLS_DATE_FORMAT variiert je nach Region und Sitzungseinstellungen des Benutzers. Daher können gültige Datumsformate zwischen Benutzern variieren und sich innerhalb einer Sitzung dynamisch ändern.
String-zu-Datum-Konvertierung
Um zu vermeiden, dass Sie sich auf implizite Konvertierungen verlassen, wird empfohlen, eine Zeichenfolge mithilfe einer der folgenden Methoden explizit in ein Datum umzuwandeln:
NLS_DATE_FORMAT ändern
Um den Sitzungsparameter NLS_DATE_FORMAT zu ändern, verwenden Sie die folgende Anweisung:
<code class="language-sql">ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';</code>
Standard-NLS_DATE_FORMAT
Das standardmäßige NLS_DATE_FORMAT hängt vom Sitzungsparameter NLS_TERRITORY ab, der das Gebietsschema des Benutzers widerspiegelt. Die folgende Abfrage zeigt die Beziehung zwischen NLS_TERRITORY und NLS_DATE_FORMAT:
<code class="language-sql">... SELECT CAST(f.format AS VARCHAR2(12)) AS format, LISTAGG(t.territory, ', ') WITHIN GROUP (ORDER BY t.territory) AS territories ...</code>
Durch das Ausführen dieser Abfrage wird eine Liste der NLS_DATE_FORMAT-Werte und der entsprechenden anwendbaren Regionen generiert.
Das obige ist der detaillierte Inhalt vonWas ist das wahre Standarddatumsformat in Oracle und wie funktioniert es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!