Tutorial para Oracle DBA
On enero 1, 2022 by adminFunciones y Operadores de Fecha.
Para ver la fecha y la hora del sistema utilice las siguientes funciones :
CURRENT_DATE :devuelve la fecha actual en la zona horaria de la sesión, en un valor del calendario gregoriano de tipo de datos
DATE
SYSDATE :devuelve la fecha y la hora actuales.
SYSTIMESTAMP :La función SYSTIMESTAMP devuelve la fecha del sistema, incluyendo los segundos fraccionarios y la zona horaria
de la base de datos. El tipo de retorno es TIMESTAMP CON ZONA HORARIA.
SYSDATE Ejemplo
Para ver la fecha y hora actual del sistema dar la siguiente consulta.
select sysdate from dual;
SYSDATE
——-
8-AUG-03
El formato en que se muestra la fecha depende del parámetro NLS_DATE_FORMAT.
Por ejemplo, establezca el NLS_DATE_FORMAT con el siguiente formato
alter session set NLS_DATE_FORMAT=’DD-MON-YYY HH:MIpm’;
Luego dé la siguiente sentencia
select sysdate from dual;
SYSDATE
——————
8-AUG-2003 03:05pm
La configuración por defecto de NLS_DATE_FORMAT es DD-MON-YY
CURRENT_DATE Ejemplo
Para ver la fecha y la hora actuales del sistema con la zona horaria utilice la función CURRENT_DATE
ALTER SESSION SET TIME_ZONE = ‘-4:0’;
ALTER SESSION SET NLS_DATE_FORMAT = ‘DD-MON-YYYY HH24:MI:SS’;
SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;
SESSIONTIMEZONE CURRENT_DATE
————— ——————–
-04:00 22-APR-2003 14:15:03
ALTER SESSION SET TIME_ZONE = ‘-7:0’;
SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;
SESSIONTIMEZONE CURRENT_DATE
————— ——————–
-07:00 22-APR-2003 09:15:33
SYSTIMESTAMP Ejemplo
Para ver la fecha y hora actual del sistema con los segundos fraccionados con la zona horaria dar la siguiente sentencia
select systimestamp from dual;
SYSTIMESTAMP
——————————-
22-APR-03 08.38.55.538741 AM -07:00
Modelos de formato de fecha
Para traducir la fecha a una cadena de formato diferente se puede utilizar la función TO_CHAR con formato de fecha. Por ejemplo para ver el día actual se puede dar la siguiente consulta
Seleccionar to_char(sysdate,’DAY’) «Hoy» FROM DUAL;
TODAY
——-
THURSDAY
Para traducir un valor de carácter, que tiene un formato distinto al formato de fecha por defecto, a un valor de fecha se puede utilizar la función TO_DATE con formato de fecha a fecha
Al igual que este modelo de formato «DAY» hay muchos otros modelos de formato de fecha disponibles en Oracle. En la siguiente tabla se enumeran los modelos de formato de fecha.
FORMATO |
Significado |
D |
Día de la semana |
DD |
Día del mes |
DDD |
Día del año |
DÍA |
Día completo por ej. |
Día |
Día en tres letras para ej. ‘LUN’, ‘JUE’,’FRI’ |
W |
Semana del mes |
WW |
Semana del año |
MM |
Mes en dos dígitos (1-Enero, 2-Feb,…12-Dic) |
MON |
Mes en tres caracteres como «Ene», «Feb», «Abr» |
MONTH |
Mes completo como «Enero», «febrero», «abril» |
RM |
Mes en caracteres romanos (I-XII, I-En, II-Feb,…XII-Dic) |
Q |
Cuarto del mes |
YYY |
Últimos dos dígitos del año. |
AÑO |
Año completo |
Año |
Año en palabras como «Mil novecientos noventa y nueve» |
HH |
Horas en formato de 12 horas |
HH12 |
Horas en formato de 12 horas |
HH24 |
Horas en formato de 24 horas |
MI |
Minutos |
SS |
Segundos |
FF |
Segundos fraccionados |
SSS |
Milisegundos |
J |
Día juliano i.e Días desde el 1 de enero de 4712 a.C. hasta la fecha |
RR |
Si el año es inferior a 50 se asume el año como el siglo XXI. Si el año es mayor que 50 entonces asume el año en el Siglo XX. |
sufijos
TH |
Devuelve th, st, rd o nd según el número principal como 1st , 2º 3º 4º |
SP |
Escribe el número principal |
AM o PM |
Devuelve AM o PM según la hora |
SPTH |
Devuelve el número ordinal deletreado. Para. Ejemplo Primero, Cuarto |
Por ejemplo para ver la fecha de hoy en el siguiente formato
Viernes, 7 de marzo de 2014
Da la siguiente sentencia
select to_char(sysdate,’Day, ddth Month, yyyy’) «Today» from dual;
TODAY
————————
Viernes, 7 de marzo de 2014
Por ejemplo, quieres ver las fechas de contratación de todos los empleados con el siguiente formato
Viernes, 8 de agosto de 2003
Entonces haz la siguiente consulta.
select to_char(hire_date,’Day, ddth Month, yyyy’) from emp;
TO_DATE Ejemplo
La función To_Date se utiliza para convertir cadenas en valores de fecha. Por ejemplo, quiere ver qué día era el 15 de agosto de 1947. Se utiliza la función to_date para convertir primero la cadena en un valor de fecha y luego pasar este valor a la función to_char para extraer el día.
select to_char(to_date(’15-aug-1947′,’dd-mon-yyyy’),’Day’)
from dual;
TO_CHAR(
——–
Viernes
Para ver cuántos días han pasado desde el 15-agosto-1947 entonces dar la siguiente consulta
select sysdate-to_date(’15-agosto-1947′,’dd-mon-yyyy’) from dual;
Ahora queremos ver qué fecha ocurrirá dentro de 45 días
select sysdate+45 from dual;
SYSDATE
——-
06-JUN-2003
ADD_MONTHS
Para ver qué fecha ocurrirá después de 6 meses a partir de ahora, podemos utilizar la función ADD_MONTHS
Seleccionar ADD_MONTHS(SYSDATE,6) de dual;
ADD_MONTHS
———-
22-OCT-2003
MONTHS_BETWEEN
Para ver cuántos meses han pasado desde una fecha determinada, utilice la función MONTHS_BETWEEN.
Por ejemplo, para ver cuántos meses han pasado desde el 15-agosto-1947, dar la siguiente consulta.
select meses_entre(sysdate,to_date(’15-agosto-1947′))
from dual;
Months
——
616.553
Para eliminar el valor decimal utilice la función truncate
select trunc(months_between(sysdate,to_date(’15-aug-1947′)))
from dual;
Meses
——
616
Último día
Para ver la última fecha del mes de una fecha dada, utiliza la función ÚLTIMO DÍA.
select LAST_DAY(sysdate) from dual;
LAST_DAY
——–
31-AUG-2003
NEXT_DAY
Para ver cuándo será el próximo día de un determinado, utilice la función NEXT_DAY.
Por ejemplo, para ver cuándo llegará el próximo sábado, realice la siguiente consulta
select next_day(sysdate) from dual;
NEXT_DAY
———–
09-AUG-2003
EXTRACT
Una función datetime EXTRACT extrae y devuelve el valor de un campo datetime especificado a partir de una expresión datetime o de valor de intervalo. Cuando se extrae una TIMEZONE_REGION o TIMEZONE_ABBR (abreviatura), el valor devuelto es una cadena que contiene el nombre de la zona horaria apropiada o la abreviatura
La sintaxis de la función EXTRACT es
EXTRACT ( AÑO / MES / SEMANA / DÍA / HORA / MINUTO / HORA DE LA FECHA)
Ejemplo
Lo siguiente demuestra el uso de la función EXTRACT para extraer el año de la fecha actual.
select extract(year from sysdate) from dual;
EXTRACT
——-
2003
Deja una respuesta