Dans Oracle Database, le TO_CHAR(datetime) la fonction convertit une valeur de date/heure ou d'intervalle en un VARCHAR2 valeur dans le format spécifié par le format de date.
Syntaxe
La syntaxe ressemble à ceci :
TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ]) Où :
datetimepeut être une valeur deDATE,TIMESTAMP,TIMESTAMPWITHTIMEZONE,TIMESTAMPWITHLOCALTIMEZONEtype de donnéesintervalpeut être une valeur deINTERVALDAYTOSECOND, ouINTERVALYEARTOMONTHtype de donnéesfmtest un modèle de format facultatif qui spécifie comment le résultat doit être formaté'nlsparam'est un argument facultatif qui spécifie la langue dans laquelle les noms et abréviations des mois et des jours sont renvoyés.
Exemple
Voici un exemple pour illustrer :
SELECT TO_CHAR(DATE '2035-09-26', 'DY, DD MONTH YYYY')
FROM DUAL; Résultat :
WED, 26 SEPTEMBER 2035
Ainsi, il a renvoyé la date fournie dans le premier argument, dans le format spécifié par le deuxième argument.
Le deuxième argument fournit le modèle de format. Le modèle de format peut consister en un ou plusieurs éléments de format. Par exemple, DY est un élément de format, tout comme DD , MONTH , etc.
Voir cette liste complète des éléments de format Datetime dans Oracle pour une liste des éléments de format qui peuvent être utilisés pour formater les valeurs datetime avec cette fonction.
Format par défaut
Si vous omettez le fmt argument, le résultat sera converti comme suit :
DATEles valeurs sont converties en valeurs dans le format de date par défaut.TIMESTAMPetTIMESTAMPWITHLOCALTIMEZONEles valeurs sont converties en valeurs au format d'horodatage par défaut.TIMESTAMPWITHTIMEZONEles valeurs sont converties en valeurs dans l'horodatage par défaut avec le format de fuseau horaire.- Les valeurs d'intervalle sont converties en représentation numérique du littéral d'intervalle.
Voici un exemple de conversion d'une DATE valeur sans préciser le format :
SELECT TO_CHAR(DATE '2035-09-26')
FROM DUAL; Résultat :
26/SEP/35
Dans ce cas, le format de date par défaut de ma session est DD/MON/RR , et donc le résultat reflète cela. Je sais qu'il s'agit du format de date par défaut de ma session car j'ai interrogé le V$NLS_PARAMETERS view, qui me montre la valeur actuelle des paramètres NLS.
Voir Comment vérifier les valeurs des paramètres NLS si vous avez besoin de les vérifier.
Consultez également Comment modifier le format de date de votre session si vous souhaitez modifier le format de date et d'heure par défaut pour votre session en cours.
Intervalle
Voici un exemple qui génère une valeur d'intervalle dans le format par défaut :
SELECT TO_CHAR(INTERVAL '25-2' YEAR TO MONTH)
FROM DUAL; Résultat :
+25-02
Le 'nlsparam' Argumentation
Le 'nlsparam' L'argument spécifie la langue dans laquelle les noms et abréviations des mois et des jours sont renvoyés. Cet argument peut avoir la forme suivante :
'NLS_DATE_LANGUAGE = language' Exemple :
SELECT
TO_CHAR(
DATE '2035-09-26',
'DY, DD MONTH YYYY',
'NLS_DATE_LANGUAGE = SPANISH'
)
FROM DUAL; Résultat :
MIÉ, 26 SEPTIEMBRE 2035
Arguments nuls
Passer null donne null :
SET NULL 'null';
SELECT TO_CHAR(null)
FROM DUAL; Résultat :
null
Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois que null se produit à la suite d'un SQL SELECT déclaration.
Cependant, vous pouvez utiliser SET NULL pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null doit être retourné.
Argument manquant
L'appel de la fonction sans passer d'arguments génère une erreur :
SELECT TO_CHAR()
FROM DUAL; Résultat :
Error starting at line : 1 in command - SELECT TO_CHAR() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
Passer trop d'arguments entraîne également une erreur :
SELECT TO_CHAR(DATE '2035-09-26', 'yy', 'NLS_DATE_LANGUAGE = spanish', 'oops!' )
FROM DUAL; Résultat :
Error starting at line : 1 in command - SELECT TO_CHAR(DATE '2035-09-26', 'yy', 'NLS_DATE_LANGUAGE = spanish', 'oops!' ) FROM DUAL Error at Command Line : 1 Column : 72 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: