Maison >base de données >tutoriel mysql >Quel est le format DATE par défaut dans Oracle et pourquoi est-il mal compris ?
Type de données DATE d'Oracle : aucun format inhérent
Le type de données DATE
d'Oracle stocke les informations de date et d'heure en interne sous la forme d'une valeur de 7 octets, et non d'une chaîne formatée. Cela signifie qu'il lui manque un format par défaut intégré.
Source d'incompréhension
L'idée fausse concernant un format DATE
par défaut survient lorsque l'on travaille avec des chaînes de texte. Oracle convertit ces chaînes en objets DATE
à l'aide du paramètre de session NLS_DATE_FORMAT
. L'influence de ce paramètre crée l'impression d'un format par défaut.
Comment Oracle gère les dates
La gestion réelle des dates dépend des paramètres de votre session Oracle :
NLS_DATE_FORMAT
actuel pour la conversion.DATE
directe ou TO_DATE
: Utilisation de DATE
littéraux (DATE 'yyyy-mm-dd'
) ou de la fonction TO_DATE
avec un masque de format contourne NLS_DATE_FORMAT
, assurant une conversion précise.Meilleures pratiques pour la gestion des dates
Pour plus de clarté et d'intégrité des données, utilisez toujours :
DATE
Littéraux : DATE 'yyyy-mm-dd'
TIMESTAMP
Littéraux : TIMESTAMP 'yyyy-mm-dd HH24:MI:SS'
TO_DATE
Fonction : TO_DATE('date_string', 'format_string')
Spécifiez explicitement le format.Ajustement NLS_DATE_FORMAT
Vous pouvez modifier le NLS_DATE_FORMAT
de votre session en utilisant :
<code class="language-sql">ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';</code>
Détermination NLS_DATE_FORMAT
par défaut
La valeur par défaut NLS_DATE_FORMAT
est déterminée par le paramètre de session NLS_TERRITORY
, variant selon la région géographique. Cette requête affiche le format et les territoires associés :
<code class="language-sql">SELECT f.format, LISTAGG(t.territory, ', ') WITHIN GROUP (ORDER BY t.territory) AS territories FROM (SELECT ROWNUM AS rn, COLUMN_VALUE AS territory FROM TABLE(territories)) t INNER JOIN (SELECT ROWNUM AS rn, COLUMN_VALUE AS format FROM TABLE(formats)) f ON (f.rn = t.rn) GROUP BY f.format;</code>
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!