Saltar al contenido

Sepa Usar el Tipo de Dato DATE en los PL-SQL Packages en Oracle

PL-SQL Packages en OracleSaber usar el tipo de dato DATE en los PL-SQL Packages en Oracle te permitirá manipular y almacenar la información de la fecha y la hora en tu Base de Datos Oracle.

La información de la fecha y hora pueden ser representados tanto como datos de tipo texto o datos de tipo numérico, para ello el tipo de dato DATE cuenta con propiedades especiales asociadas para utilizarlas en tus PL-SQL Packages en Oracle.

Para cada valor de un tipo de dato DATE en tus PL-SQL Packages en Oracle se almacena la siguiente información:

/* PL-SQL Packages en Oracle */

– Siglo (Century)

– Año (Year)

– Mes (Month)

– Día (Day)

– Hora (Hour)

– Minuto (Minute)

– Segundo (Second)

No se puede especificar un literal de tipo DATE en tus PL-SQL Packages en Oracle. Para especificar un valor de tipo DATE primero se debe convertir desde un dato de tipo texto o de tipo numérico usando la función TO_DATE.

TÚ REPORTE: “Cómo Construir un SELECT Eficiente en ORACLE en Solo 7 Pasos”

¡ Haz Click Aquí y Descárgalo GRATIS Ahora !

Oracle por defecto convierte automáticamente los valores de texto que están en el formato de fecha en los valores de tipo DATE cuando son utilizados en expresiones de fecha en tus PL-SQL Packages en Oracle. Revisemos un ejemplo del Formato de un dato de tipo DATE.

Ejemplo #1: Si se utiliza la función TO_DATE con el formato ‘DD-MON-YY’ para convertir un texto en una fecha, en esta expresión se representan dos dígitos para el día ‘DD’, una abreviatura para el nombre del mes ‘MON’ y los dos últimos dígitos del año ‘YY’, veamos como se hace:

/* PL-SQL Packages en Oracle */

Select to_date(’12-04-2012’,’DD-MON-YY’) from dual;

Resultado: 12-ABR-12

Si en tus PL-SQL Packages en Oracle se especifica un valor de fecha sin un componente de tiempo, el valor por defecto es de 12:00:00 AM (Medianoche). Si se especifica un valor de fecha sin fecha, la fecha predeterminada es el primer día del mes actual.

Ejemplo #2: Para definir una variable de tipo DATE se debe hacer de la forma siguiente:

/* PL-SQL Packages en Oracle */

ldt_fecha    date;

begin

ldt_fecha:= sysdate;

end;

En este ejemplo se define la variable lin_fecha del tipo DATE y luego se le asigna la fecha actual con la PL-SQL Function en Oracle Sysdate.

Te propongo que pruebes de inmediato estos ejemplos en tu Base de Datos con tus propias tablas,  PL-SQL Procedures en Oracle y PL-SQL Function en Oracle, para que comiences a ejercitar la mano y aprendas a dominar esta nueva técnica en tus PL-SQL Packages en Oracle.

Estoy muy interesado en conocer tu opinión y/o comentario sobre este artículo, también cuéntame sobre qué es lo que quieres saber de PL-SQL Packages en Oracle y/o dime cuál es tu principal frustración a la hora de trabajar con PL-SQL Packages en Oracle. Estaré muy atento respondiendo tus preguntas y/o comentarios, gracias.

Saludos

Roberto Vicencio – Escritor del Reporte:

Cómo Construir un SELECT Eficiente en ORACLE en Solo 7 Pasos

8 comentarios en «Sepa Usar el Tipo de Dato DATE en los PL-SQL Packages en Oracle»

  1. estoy comparando dos fechas y debo hacer x insercions mientras las dos fechas sean diferentes, esto se debe hacer mediante un siclo pero no he podido y no se el por que?
    gracias por si alguien me puede colaborar

    1. Hola Juan, gracias por comunicarte, tu pregunta no esta muy clara pero tratare de ayudarte, para hacer esto puedes usar un ciclo for de esta forma:

      for reg_dat in (select fecha1, fecha2 from tu_tabla)
      loop
      if reg_dat.fecha1 reg_dat.fecha2 then
      insert into ….
      end if;
      end loop;

      PD: Ya obtuviste mi reporte gratuito sobre “Como Construir un SELECT Eficiente en Oracle en Solo 7 Pasos”, si aún no lo has hecho puedes obtenerlo desde aquí:
      https://dominatuspackagesen0racle.com

      Saludos
      Roberto Vicencio – Para Tu Éxito con Oracle.

  2. Consulta urgente, necesito cambiar la fecha de formato como por ejemplo:
    Tengo una columna tipo date y su datos es:
    12/09/2013 02:30:15 p.m.
    y quiero recuperar (columna fecha tipo date)el dato en el siguiente formato:
    12/09/2013 14:30:15

    la consulta es como: select Fecha from Articulos;

    gracias por su ayuda:
    Ruben

    1. Hola Ruben, gracias por comunicarte y por tu comentario, para resolver esto debes hacer lo siguiente:

      select to_date(to_char(Fecha,’dd/mm/yyyy hh24:mi:ss’),’dd/mm/yyyy hh24:mi:ss’) fecha from Articulos;

      PD: Ya obtuviste mi libro-reporte gratuito sobre “Como Construir un SELECT Eficiente en Oracle en Solo 7 Pasos”, si aun no lo tienes puedes obtenerlo desde aquí:
      https://dominatuspackagesen0racle.com/

      Saludos
      Roberto Vicencio – Para Tu Éxito con Oracle.

  3. Hola, es que estoy tratando de leer datos desde un documento xml que solo contienen la hora (no la fecha completa), así:
    6:00 8:00
    y debo convertirlos a un formato que me permita realizar la diferencia de estos valores para poder verificar que hora_fin sea mayor que hora_inicio.
    Podrías por favor ilustrarme al respecto?

    1. Hola Lina, gracias por comunicarte, como el documento solo contiene la hora debes asumir que la información es del día, por lo tanto la hora la puedes manejar como numero, es decir de 0 a 2400, donde las 6:00 corresponde al 600, las 8:00 corresponde a 800, las 17:30 corresponde a 1730 y así para todos, de esta forma validas que un numero sea mayor o menor que otro.

      PD: Ya pudiste ver mi libro reporte sobre ‘Cómo Crear un SELECT Eficiente en ORACLE en Solo 7 Pasos’, si aun no lo tienes en tus manos puedes obtenerlo gratis desde aquí: https://dominatuspackagesen0racle.com/

      Saludos
      Roberto Vicencio – Para Tu Éxito con Oracle.

  4. Debo de contar la cantidad de dias habiles entre una fecha y otra, no lo puedo hacer con una función por privilegios en la base de datos.
    Para esto tengo una tabla con las fechas festivas .
    ya tengo los dias corridos y ya tengo los dias festivos.

    Necesito ayuda para saber entre esas dos fechas cuantos sabados y domingos hay .

    TRUNC(AUDIENCIA.FECHA_PROGRAMA) – TRUNC(COMPARENDOS.FECHA) AS DIAS_CORRIDOS,
    (SELECT COUNT(1) FROM FECHAS_FESTIVAS WHERE FECHA_FESTIVA BETWEEN (COMPARENDOS.FECHA) AND (AUDIENCIA.FECHA_PROGRAMA) )as dia_Festivo,

    1. Hola Jonathan, gracias por comunicarte, para contar cuantos sábados y domingos hay usa la cantidad de días corridos y la fecha comparendos, algo como lo siguiente:

      for lin_dia in 0..lin_dias_corridos
      loop
      lst_nom_dia:= TRIM(to_char(ldt_fecha_comparendos+lin_dia,’DAY’,’NLS_DATE_LANGUAGE=SPANISH’));
      if lst_nom_dia = ‘SABADO’ then
      lin_sabado:= lin_sabado + 1;
      elsif lst_nom_dia = ‘DOMINGO’ then
      lin_domingo:= lin_domingo + 1;
      end if;
      end loop;

      PD: Ya pudiste ver mi libro reporte sobre ‘Cómo Crear un SELECT Eficiente en ORACLE en Solo 7 Pasos’, si aun no lo tienes en tus manos puedes obtenerlo gratis desde aquí: https://dominatuspackagesen0racle.com/

      Saludos
      Roberto Vicencio – Para Tu Éxito con Oracle.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.