La vérité sur le format de date de la base de données Oracle et son mécanisme de fonctionnement
De nombreux articles affirment que le format de date par défaut d'Oracle est AAAAMMJJ, JJ/MM/AAAA ou AAAA-MM-JJ. Cependant, ce malentendu vient du fait qu’Oracle lui-même ne dispose pas de format de date prédéfini. Oracle stocke en interne les dates sous forme de valeurs binaires qui représentent l'année, le mois, le jour, l'heure, la minute et la seconde.
Lors de l'insertion d'une date dans Oracle à l'aide d'une chaîne telle que « 25-JAN-18 », Oracle tente de convertir la chaîne en une date basée sur le paramètre de session NLS_DATE_FORMAT. La valeur de NLS_DATE_FORMAT varie en fonction de la région et des paramètres de session de l'utilisateur. Par conséquent, les formats de date valides peuvent varier d’un utilisateur à l’autre et changer dynamiquement au cours d’une session.
Conversion de chaîne en date
Pour éviter de s'appuyer sur des conversions implicites, il est recommandé de convertir explicitement une chaîne en date en utilisant l'une des méthodes suivantes :
Modifier NLS_DATE_FORMAT
Pour modifier le paramètre de session NLS_DATE_FORMAT, utilisez l'instruction suivante :
<code class="language-sql">ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';</code>
NLS_DATE_FORMAT par défaut
Le NLS_DATE_FORMAT par défaut dépend du paramètre de session NLS_TERRITORY, qui reflète les paramètres régionaux de l'utilisateur. La requête suivante démontre la relation entre NLS_TERRITORY et 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>
L'exécution de cette requête générera une liste de valeurs NLS_DATE_FORMAT et leurs régions applicables correspondantes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!