• Flock of wintering Barnacle Goose(branta leucopsis)in wadden Sea,East Frisia,lower saxony,Germany

#ADNCLOUD

Innovación en la sociedad digital

Categorías

Función Oracle TO_DATE: ejemplos, formatos y usos

Oracle TO_DATE
Tiempo de lectura: 10 minutos

Según los analistas de Forrester, Oracle es el proveedor número 1 en cuanto a bases de datos se trata. Siendo Oracle Database la plataforma de base de datos más utilizada por empresas de todo el mundo. Por lo tanto, es importante conocer ciertas funciones y sintaxis básicas para gestionar correctamente en estas BB.DD. En este artículo explicaremos todo lo relacionado con la función Oracle TO_DATE en las bases de datos de Oracle.

New Call-to-action

¿Qué es Oracle TO_DATE y para qué sirve?

Oracle TO_DATE database

Fuente: Forrester

Oracle TO_DATE es la función que se ejecuta en las bases de datos de Oracle para controlar, gestionar y modificar fechas. Técnicamente, la función TO_DATE() de Oracle es la que permite convertir una cadena de caracteres o datos de tipo CHAR, VARCHAR2, NCHAR, NVARCHAR2 en un valor de tipo DATE (fecha).

A través de esta función podemos trabajar con distintos formatos de fechas y horas. Esta es una ventaja, ya el formato de fecha y hora se puede (o debe) cambiar para ajustarlo a necesidades específicas según criterios como el tipo de base de datos, sus objetivos técnicos, el país donde es usada la BB.DD. o el idioma de los usuarios. Esto al considerar que existen múltiples formatos de fechas internacionales.

Oracle TO_DATE se puede utilizar en las versiones Database 10g y Database 11g.

Formatos de fechas en Oracle

En bases de datos, las fechas no deben ser trabajadas como cadenas de caracteres, ¡esto es un error! En cambio, lo correcto es hacerlo con formatos de fechas específicos mediante sintaxis TO_DATE. De aquí la importancia de Oracle TO_DATE para trabajar con fechas de manera correcta.

Sabiendo esto, ahora pasemos a conocer los formatos de fechas en Oracle:

Formato Descripción Resultado
Y Último dígito del año 20
YY Los 2 últimos dígitos del año 20
YYY Los 3 últimos dígitos del año 020
YYYY Año usando 4 dígitos 2020
RR Año usando 2 dígitos 20
YEAR Año escrito en inglés TWENTY
MM Mes con 2 dígitos 03
MON Abreviatura del mes con 3 letras MAR
MONTH Nombre del mes en inglés MARCH
D Día de la semana 3
DD Día del mes (2 dígitos) 04
DDD Día del año 64
DY Abreviatura del nombre del día de 3 letras WED
DAY Nombre del día en inglés WEDNESDAY
W Semana del mes 1
WW Semana del año 10
Q Cuarto del año 1
CC Siglo 21
SCC Igual que CC pero añade «-» si la fecha es antes de Cristo -3
SYYYY Igual que YYYY pero añade «-» si la fecha es antes de Cristo -734
SYEAR Igual que YEAR pero añade «-» si la fecha es antes de Cristo -THIRTY THREE
BC, AD, B.C. , A.D. Añade BC o AD AD
J Número de días desde el 31 de diciembre de 4713 a. C. 2458914
IW Semana según el estándar ISO 10
RM Mes en números romanos III
AM, PM, A.M. , P.M. Indicador de meridiano PM
HH Hora del día 06
HH12 Hora del día 1-12 06
HH24 Hora del día 0-23 18
MI Minuto 0-59 34
SS Segundo 0-59 45
SSSSS Segundos desde la media noche 0-86399 32098
/.,?#! Signos de puntuación, por ejemplo: ‘MM.YY’ 03.20
«literales» Por ejemplo, ‘«Semana» W «de» Month’ Semana 1 de March
 TH DDth 12TH
SP Transcripción de números, por ejemplo: MM Nine
THSP or SPTH Transcripción posicional o numérica, por ejemplo: ‘hh24Spth’ Fourtheenth

¿Cómo obtener el formato fecha mediante Oracle TO_DATE?

Mediante Oracle TO_DATE no podemos conocer el formato de fecha que ya hay en una base de datos. Sin embargo, a través de NLS_DATABASE_PARAMETERS sí podemos hacerlo.

La función NLS_DATABASE_PARAMETERS nos permite conocer los parámetros de tipo NLS (National Language Support), los cuales están relacionados con los datos de fechas, horas, monedas, calendarios, idiomas, territorios, entre otros.

Oracle TO_DATE database ejemplos

Fuente: Tu Informática Fácil

¿Cómo establecer o cambiar el formato de fecha mediante Oracle TO_DATE?

Para establecer o cambiar el formato de fecha mediante Oracle TO_DATE hay que tener en cuenta el tipo de cadena de caracteres. Por ejemplo, si es de tipo CHAR, tenemos lo siguiente:

Sintaxis de Oracle TO_DATE:

TO_DATE(char [,fmt])

Función TO_DATE:

select TO_DATE('04/01/2020','DD/MM/YYYY') from dual;

Retorna:

04/01/2020

“fmt” indica un modelo de formato de fecha con hora que establece el formato específico de la cadena. Si no se incluye fmt, entonces la cadena debería estar entonces en el formato de fecha predeterminado. Si fmt es J (fecha Juliana), la cadena debería ser entonces un número entero.

Ejemplo de Oracle TO_DATE para formato de 24 horas

Ejemplo de Oracle TO_DATE para incluir la hora en formato de 24 horas dentro de la fecha a establecer:

Sintaxis de Oracle TO_DATE para 24 horas:

TO_DATE(cadena_de_caracteres,formato)

Función TO_DATE para 24 horas:

select TO_DATE('14/ENE/2020 14:23','DD/MON/YYYY HH24:MI') FechayHora from dual;

Retorna:

14/ENE/2018 14:23:00

Ejemplo de Oracle TO_DATE para formatos am y pm

Ejemplo de Oracle TO_DATE para incluir la hora en formato am y om dentro de la fecha a establecer:

Sintaxis de Oracle TO_DATE para formatos am y pm:

TO_DATE(cadena_de_caracteres,formato)

Función TO_DATE para formatos am y pm:

select to_date ('14-ENE-2020 10:00 AM','DD-MON-YYYY HH:MI AM') from dual;

Retorna:

14/ENE/2020 10:00 AM

¿Se puede usar Oracle TO_DATE para milisegundos?

Oracle TO_DATE admite fechas entre 01/01/4712 AC hasta 31/12/9999 DC. Y aunque también admite horas, minutos y segundos, no permite las fracciones de segundos, pues la mayor precisión admisible en esta función es precisamente la de un segundo.

Sin embargo, aunque Oracle TO_DATE no es funcional para milisegundos, se puede utilizar la función TO_TIMESTAMP, tal como el siguiente ejemplo:

TO_TIMESTAMP( '04.01.2020 14:01:001', 'DD.MM.YYYY HH24:MI:SSFF3' )

Para obtener el resultado:

04/01/2020 14:01:001

O también:

TO_TIMESTAMP('10-SEP-0214:10:10.123000','DD-MON-RRHH24:MI:SS.FF')

Para obtener el  resultado:

10-SEP-02 02.10.10.123000000 PM

Oracle TO_DATE en SQL server

Los métodos para establecer fechas y horas varía entre Oracle TO_DATE y SQL Server. Para SQL Server debemos usar las funciones CONVERT o TRY_CONVERT. Por ejemplo:

SELECT CONVERT(DATETIME, '04-JAN-2020');

Lo cual arroja el resultado:

2020-01-04 00:00:00.000

La función Oracle TO_DATE es bastante versátil y nos permite aplicar una gran cantidad de formatos de fechas. Si bien es cierto que tiene sus limitaciones, también es cierto que, sabiéndola utilizar, con esta función podemos satisfacer prácticamente cualquier requerimiento específico sobre formatos internacionales al implementar proyectos de big data.

New Call-to-action

Entradas relacionadas

Deja un comentario

No hay comentarios

Todavía no hay ningún comentario en esta entrada.