Este artículo contiene ejemplos comunes de formato de fechas en Oracle Database.
El formato de fecha predeterminado para su sesión está determinado por varios parámetros de inicialización de NLS (aquí se explica cómo verificarlos). Puede aprovechar estos parámetros para generar un formato compatible con la configuración regional.
También puede usar funciones como TO_CHAR(number)
para convertir fechas en una cadena y formatearlas exactamente como quieras sobre la marcha.
Formato de fecha predeterminado
Cuando devuelve una fecha en Oracle, de forma predeterminada, se devuelve en el formato de fecha predeterminado para la sesión actual.
Ejemplo:
SELECT DATE '2030-12-10' FROM DUAL;
Resultado:
10/DEC/30
En este caso, el formato de fecha predeterminado de mi sesión es DD/MON/RR
, por lo que el resultado refleja eso.
Puede cambiar el formato cambiando el NLS_TERRITORY
(que cambia implícitamente otros parámetros, como los parámetros de fecha y hora), o cambiar el NLS_DATE_FORMAT
parámetro directamente.
Esto es lo que sucede cuando cambio el NLS_TERRITORY
parámetro a un territorio diferente:
ALTER SESSION SET NLS_TERRITORY = 'Germany';
SELECT DATE '2030-12-10' FROM DUAL;
Resultado:
10.12.30
El formato de fecha predeterminado se ha actualizado para reflejar el formato de esa configuración regional.
También hay otros parámetros NLS de fecha y hora, como NLS_TIME_FORMAT
, NLS_TIME_TZ_FORMAT
, NLS_TIMESTAMP_FORMAT
y NLS_TIMESTAMP_TZ_FORMAT
que debe tener en cuenta al cambiar los formatos de fecha y hora.
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.
El TO_CHAR()
Función
Tél TO_CHAR(datetime)
La función acepta un valor de fecha y hora y devuelve una cadena con el formato que usted especifique.
He aquí un ejemplo rápido:
SELECT TO_CHAR(DATE '2035-09-26', 'Dy, DD Month YYYY')
FROM DUAL;
Resultado:
Wed, 26 September 2035
Aquí, la función devolvió la fecha proporcionada 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
Si no especifica un formato, se devuelve utilizando el formato predeterminado para la sesión.
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.
A continuación se muestran ejemplos más específicos.
Devolver el nombre del día
Puede devolver partes de fechas individuales si es necesario. Por ejemplo, puede devolver solo el nombre del día, solo el nombre del mes, etc. Todo lo que necesita hacer es usar el elemento de formato aplicable como el único elemento de formato en su modelo de formato.
Aquí hay un ejemplo de devolver el nombre del día:
SELECT TO_CHAR(DATE '2035-09-26', 'Day')
FROM DUAL;
Resultado:
Wednesday
En este caso devolví el nombre completo del día.
Podemos usar Dy
como en el ejemplo anterior para devolver el nombre corto del día:
SELECT TO_CHAR(DATE '2035-09-26', 'Dy')
FROM DUAL;
Resultado:
Wednesday
Devolver el nombre del mes
Aquí hay un ejemplo de devolver el nombre del mes:
SELECT TO_CHAR(DATE '2035-09-26', 'Month')
FROM DUAL;
Resultado:
September
Y el nombre corto del mes:
SELECT TO_CHAR(DATE '2035-09-26', 'Mon')
FROM DUAL;
Resultado:
September
Sensibilidad de mayúsculas y minúsculas
En los ejemplos anteriores, escribimos en mayúscula la primera letra de los nombres de día y mes.
Alternativamente, podemos usar todas las mayúsculas para devolver los nombres del día y el mes en mayúsculas, y todas las minúsculas para devolverlos en minúsculas.
SELECT
TO_CHAR(DATE '2035-09-26', 'DY, Dy, dy')
FROM DUAL
UNION ALL
SELECT
TO_CHAR(DATE '2035-09-26', 'DAY, Day, day')
FROM DUAL
UNION ALL
SELECT
TO_CHAR(DATE '2035-09-26', 'MON, Mon, mon')
FROM DUAL
UNION ALL
SELECT
TO_CHAR(DATE '2035-09-26', 'MONTH, Month, month')
FROM DUAL;
Resultado:
WED, Wed, wed WEDNESDAY, Wednesday, wednesday SEP, Sep, sep SEPTEMBER, September, september
Idioma
El NLS_DATE_LANGUAGE
El parámetro se utiliza para determinar el idioma de las partes de la fecha que se deletrean (como los nombres de los días y los nombres de los meses). El valor predeterminado de este parámetro se deriva del NLS_LANGUAGE
parámetro.
Este es un ejemplo de cómo actualizar el NLS_DATE_LANGUAGE
parámetro, luego devolviendo una fecha formateada que incluye el nombre del día y el nombre del mes:
ALTER SESSION SET NLS_DATE_LANGUAGE = 'Spanish';
SELECT TO_CHAR(DATE '2035-09-26', 'Dy, DD Month YYYY')
FROM DUAL;
Resultado:
Mié, 26 Septiembre 2035
El idioma también se puede especificar explícitamente desde el TO_CHAR()
función en sí. Hacer esto le permite anular temporalmente la configuración de idioma predeterminada para la sesión actual, sin afectar esa configuración.
Ejemplo:
ALTER SESSION SET NLS_DATE_LANGUAGE = 'English';
SELECT TO_CHAR(
DATE '2035-09-26',
'Dy, DD Month YYYY',
'NLS_DATE_LANGUAGE = Spanish'
)
FROM DUAL;
Resultado:
Mié, 26 Septiembre 2035
En este ejemplo, configuré mi sesión actual para usar inglés, luego ejecuté una consulta para generar una fecha usando español.
Como se mencionó anteriormente, la salida de la fecha en español no afectó la configuración en inglés. Para demostrar esto, ejecuté la siguiente consulta inmediatamente después de esa (sin cambiar el NLS_DATE_LANGUAGE
parámetro).
SELECT TO_CHAR(
DATE '2035-09-26',
'Dy, DD Month YYYY'
)
FROM DUAL;
Resultado:
Wed, 26 September 2035
Como era de esperar, el resultado está en inglés, que es el idioma predeterminado para la sesión actual.