En Oracle Database, el TO_CHAR(datetime) La función convierte un valor de intervalo o fecha y hora en un VARCHAR2 valor en el formato especificado por el formato de fecha.
Sintaxis
La sintaxis es así:
TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ]) donde:
datetimepuede ser un valor deDATE,TIMESTAMP,TIMESTAMPWITHTIMEZONE,TIMESTAMPWITHLOCALTIMEZONEtipo de datosintervalpuede ser un valor deINTERVALDAYTOSECONDoINTERVALYEARTOMONTHtipo de datosfmtes un modelo de formato opcional que especifica cómo debe formatearse el resultado'nlsparam'es un argumento opcional que especifica el idioma en el que se devuelven los nombres de mes y día y las abreviaturas.
Ejemplo
Aquí hay un ejemplo para demostrarlo:
SELECT TO_CHAR(DATE '2035-09-26', 'DY, DD MONTH YYYY')
FROM DUAL; Resultado:
WED, 26 SEPTEMBER 2035
Entonces, devolvió la fecha que se proporcionó en el primer argumento, en el formato especificado por el segundo argumento.
El segundo argumento proporciona el modelo de formato. El modelo de formato puede constar de uno o más elementos de formato. Por ejemplo, DY es un elemento de formato, al igual que DD , MONTH , etc.
Consulte esta Lista completa de elementos de formato de fecha y hora en Oracle para obtener una lista de elementos de formato que se pueden usar para formatear valores de fecha y hora con esta función.
Formato predeterminado
Si omite el fmt argumento, el resultado se convertirá de la siguiente manera:
DATElos valores se convierten en valores en el formato de fecha predeterminado.TIMESTAMPyTIMESTAMPWITHLOCALTIMEZONElos valores se convierten en valores en el formato de marca de tiempo predeterminado.TIMESTAMPWITHTIMEZONElos valores se convierten en valores en la marca de tiempo predeterminada con formato de zona horaria.- Los valores de intervalo se convierten a la representación numérica del literal de intervalo.
Aquí hay un ejemplo de cómo convertir un DATE valor sin especificar el formato:
SELECT TO_CHAR(DATE '2035-09-26')
FROM DUAL; Resultado:
26/SEP/35
En este caso, el formato de fecha predeterminado de mi sesión es DD/MON/RR , por lo que el resultado refleja eso. Sé que este es el formato de fecha predeterminado de mi sesión porque consulté el V$NLS_PARAMETERS view, que me muestra el valor actual de los parámetros NLS.
Consulte Cómo verificar los valores de los parámetros NLS si necesita verificarlos.
Consulte también Cómo cambiar el formato de fecha de su sesión si desea cambiar el formato de fecha y hora predeterminado para su sesión actual.
Intervalo
Aquí hay un ejemplo que genera un valor de intervalo en el formato predeterminado:
SELECT TO_CHAR(INTERVAL '25-2' YEAR TO MONTH)
FROM DUAL; Resultado:
+25-02
El 'nlsparam' Argumento
El 'nlsparam' El argumento especifica el idioma en el que se devuelven los nombres y las abreviaturas de los meses y los días. Este argumento puede tener la siguiente forma:
'NLS_DATE_LANGUAGE = language' Ejemplo:
SELECT
TO_CHAR(
DATE '2035-09-26',
'DY, DD MONTH YYYY',
'NLS_DATE_LANGUAGE = SPANISH'
)
FROM DUAL; Resultado:
MIÉ, 26 SEPTIEMBRE 2035
Argumentos nulos
Pasando null da como resultado null :
SET NULL 'null';
SELECT TO_CHAR(null)
FROM DUAL; Resultado:
null
De forma predeterminada, SQLcl y SQL*Plus devuelven un espacio en blanco cada vez que null ocurre como resultado de un SQL SELECT declaración.
Sin embargo, puede usar SET NULL para especificar una cadena diferente a devolver. Aquí especifiqué que la cadena null debe ser devuelto.
Argumento faltante
Llamar a la función sin pasar ningún argumento da como resultado un error:
SELECT TO_CHAR()
FROM DUAL; Resultado:
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:
Pasar demasiados argumentos también genera un error:
SELECT TO_CHAR(DATE '2035-09-26', 'yy', 'NLS_DATE_LANGUAGE = spanish', 'oops!' )
FROM DUAL; Resultado:
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: