Funciones útiles de fecha y hora en PL/SQL

Los formatos de función de fecha y hora son diferentes en varias bases de datos. vamos a discutir las funciones más comunes utilizadas en la base de datos Oracle.

La función SYSDATE devuelve 7 bytes de datos, que incluye:

  • Siglo
  • Año
  • Mes
  • Día
  • Hora
  • Minuto
  • Segundo

1. Extraer():
Oracle lo ayuda a extraer el año, el mes y el día de una fecha utilizando la función Extraer().

  • Ejemplo-1: Año de extracción:

    SELECT SYSDATE AS CURRENT_DATE_TIME, EXTRACT(Year FROM SYSDATE) AS ONLY_CURRENT_YEAR
    FROM Dual

    Producción:

    FECHA_ACTUAL_HORA SOLO_AÑO_ACTUAL
    05.feb.2019 07:29:24 2019

    Explicación:
    Útil para recuperar solo el año de la fecha del sistema/fecha actual o fecha específica específica.

  • Ejemplo-2: Mes de extracción:

    SELECT SYSDATE AS CURRENT_DATE_TIME, EXTRACT(Month FROM SYSDATE) AS ONLY_CURRENT_MONTH
    FROM Dual

    Producción:

    FECHA_ACTUAL_HORA SOLO_CURRENT_MES
    05.feb.2019 07:29:24 Feb

    Explicación:
    útil para recuperar solo el mes de la fecha del sistema/fecha actual o una fecha específica específica.

  • Ejemplo-3: Día de extracción:

    SELECT SYSDATE AS CURRENT_DATE_TIME, EXTRACT(Day FROM SYSDATE) AS ONLY_CURRENT_DAY
    FROM Dual

    Producción:

    FECHA_ACTUAL_HORA SOLO_CURRENT_DAY
    05.feb.2019 07:29:24 5

    Explicación:
    útil para recuperar solo el día de la fecha del sistema/fecha actual o fecha específica específica.

2. ADD_MONTHS (fecha, n):
con este método en PL/SQL, puede sumar y restar el número de meses (n) a una fecha. Aquí ‘n’ puede ser tanto negativo como positivo.

  • Ejemplo-4:

    SELECT ADD_MONTHS(SYSDATE, -1)  AS PREV_MONTH, SYSDATE AS CURRENT_DATE
                                     ADD_MONTHS(SYSDATE, 1) as NEXT_MONTH
    FROM Dual

    Producción:

    PREV_MES FECHA ACTUAL PRÓXIMO MES
    02.ene.2019 09:15:46 02.feb.2019 09:15:46 02.mar.2019 09:15:46

    Explicación:
    la función ADD_MONTHS tiene dos parámetros, uno es la fecha, donde podría ser cualquier fecha específica/particular o fecha del sistema como fecha actual y el segundo es ‘n’, es un valor entero que puede ser positivo o negativo para obtener la próxima fecha o la fecha anterior .

3. LAST_DAY (fecha):
con este método en PL/SQL puede obtener el último día del mes de la fecha especificada.

  • Ejemplo-5:

    SELECT SYSDATE AS CURRENT_DATE, LAST_DAY(SYSDATE) AS LAST_DAY_OF_MONTH, 
                                    LAST_DAY(SYSDATE)+1 AS FIRST_DAY_OF_NEXT_MONTH
    FROM Dual

    Producción:

    FECHA ACTUAL LAST_DAY_OF_MES PRIMER_DÍA_DE_PRÓXIMO_MES
    02.feb.2019 09:32:00 28.feb.2019 09:32:00 01.Mar.2019 09:32:00

    Explicación:
    En el ejemplo anterior, estamos obteniendo la fecha actual usando la función SYSDATE y la última fecha del mes se recuperaría usando la función LAST_DAY y esta función también será útil para recuperar el primer día del próximo mes.

  • Ejemplo-6: Número de días restantes en el mes

    SELECT SYSDATE AS CURRENT_DATE, LAST_DAY(SYSDATE) - SYSDATE AS DAYS_LEFT_IN_MONTH
    FROM Dual

    Producción:

    FECHA ACTUAL DAYS_LEFT_IN_MONTH
    02.feb.2019 09:32:00 26

4. MESES_ENTRE (fecha1, fecha2):
Usando este método en PL/SQL puede calcular el número de meses entre dos fechas ingresadas fecha1 y fecha2. si la fecha 1 es posterior a la fecha 2, el resultado sería positivo y si la fecha 1 es anterior a la fecha 2, el resultado sería negativo.

Nota:
Si se calcula un mes fraccionario, la función MONTHS_BETWEEN calcula la fracción en función de un mes de 31 días.

  • Ejemplo-7:

    SELECT MONTHS_BETWEEN (TO_DATE ('01-07-2003', 'dd-mm-yyyy'), 
                           TO_DATE ('14-03-2003', 'dd-mm-yyyy')) AS NUMBER_OF_MONTHS
    FROM Dual

    Producción:

    NÚMERO DE MESES
    3.58

    Explicación:
    aquí la fecha 1 y la fecha 2 no están en el mismo día del mes, por eso estamos obteniendo el valor en fracciones, así como la fecha 1 es posterior a la fecha 2, por lo que el valor resultante está en números enteros.
    La fecha ingresada debe estar en un formato de fecha particular, esa es la razón de usar la función TO_DATE mientras se compara dentro de la función MONTHS_BETWEEN.

    Seleccionemos el número de meses que un empleado ha trabajado para la empresa.

  • Ejemplo-8:

    SELECT MONTHS_BETWEEN (SYSDATE, DATE_OF_HIRE) AS NUMBER_OF_MONTHS
    FROM Employees

    Aporte:

    FECHA DEL SISTEMA FECHA DE CONTRATACIÓN
    02-02-2019 31-10-2017
    02-02-2019 03-12-2017
    02-02-2019 24-09-2018
    02-02-2019 22-12-2016
    02-02-2019 18-06-2018

    Producción:

    NÚMERO DE MESES
    15.064
    13.967
    4.290
    25.354
    7.483

5. NEXT_DAY(fecha, día_de_la_semana):
Devolverá la próxima fecha del primer día de la semana que sea posterior a la fecha ingresada. Tiene dos parámetros, la primera fecha donde se puede ingresar la fecha del sistema o la fecha especificada; segundo día de la semana que debe estar en forma de carácter.

  • Ejemplo-9:

    SELECT NEXT_DAY(SYSDATE, 'SUNDAY') AS NEXT_SUNDAY
    FROM Dual

    Producción:

    EL DOMINGO PRÓXIMO
    17-FEB-2019

    Explicación:
    ayudará a proporcionar la próxima fecha próxima correspondiente al día, el tipo de devolución siempre es FECHA independientemente de la fecha del tipo de datos. El segundo parámetro debe ser un día de la semana ya sea nombre completo o abreviado.

Publicación traducida automáticamente

Artículo escrito por ShubhamMaurya3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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