Ir al contenido principal

Funciones de fechas en OraclePLSQL

Funciones de fechas en OraclePLSQL

Conocer las funciones de fecha es muy útil al momento de hacer consultas SQL, ya sea para preparar un resumen por año, mes, semana, etc. 

A continuación, las funciones más comunes.

·         Obtener el día actual:

SELECT SYSDATE HOY FROM DUAL;

HOY
-----
15/01/2020 8:09:21
SELECT TRUNC(SYSDATE) HOY FROM DUAL;
HOY
-----
15/01/2020
SELECT TO_CHAR(SYSDATE,'DAY') HOY FROM DUAL;
HOY
-----
MIÉRCOLES

·         Obtener la semana actual:

SELECT TO_CHAR(SYSDATE,'IW') SEM FROM DUAL;
SEM
-----
03

·         Obtener el mes actual:

SELECT TO_CHAR(SYSDATE,'MM') MES FROM DUAL;
MES
-----
01
SELECT TO_CHAR(SYSDATE,'MONTH') MES FROM DUAL;
MES
-----
ENERO

·          Obtener el primer día de la semana:

SELECT TRUNC(SYSDATE,'IW') SEMANA FROM DUAL;
SEMANA
-----
13/01/2020

·         Obtener el primer día del mes:

SELECT TRUNC(SYSDATE,'MM') INICIO_MES FROM DUAL;
INICIO_MES
-----
01/01/2020

·         Obtener el último día del mes:

SELECT LAST_DAY('05/01/2020') ULTIMO_DEL_MES FROM DUAL;
ULTIMO_DEL_MES
-----
31/01/2020

·         Obtener el primer día del año:

SELECT TRUNC(SYSDATE,'Y') PRIMER_DIA_ANHO FROM DUAL;
PRIMER_DIA_ANHO
-----
01/01/2020

·         Como plus consulta para obtener rangos de fechas: 

o    Obtener todos los días del mes

SELECT (TRUNC(SYSDATE'MM')+LEVEL-1) DIAS
  FROM DUAL
CONNECT BY (TRUNC(SYSDATE'MM')+LEVEL-1) <= LAST_DAY(SYSDATE);
DIAS
-----
01/01/2020
02/01/2020
03/01/2020
*****
31/01/2020

o    Obtener todos los días de la semana

SELECT (TRUNC(SYSDATE'IW')+LEVEL-1) DIAS
  FROM DUAL
CONNECT BY (TRUNC(SYSDATE'IW')+LEVEL-1) <= TRUNC(SYSDATE+8'IW')-1;
DIAS
-----
13/01/2020
14/01/2020
*****
19/01/2020

o    Obtener todos los meses del año

SELECT ADD_MONTHS(TRUNC(SYSDATE'Y'), LEVEL - 1) MES
  FROM DUAL
CONNECT BY ADD_MONTHS(TRUNC(SYSDATE'Y'), LEVEL - 1) <=
           TRUNC(SYSDATE + 366'Y') - 1;
MES
-----
01/01/2020
01/02/2020
01/03/2020
*****
01/12/2020

SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE'Y'), LEVEL - 1),'MONTH') MES
FROM DUAL
CONNECT BY ADD_MONTHS(TRUNC(SYSDATE'Y'), LEVEL - 1) <=
TRUNC(SYSDATE + 366'Y') - 1;
MES
-----
ENERO
FEBRERO
MARZO
*****
DICIEMBRE



Espero que este blog les ayude, saludos.


Comentarios

Entradas populares de este blog