Categorias
Como adicionar dia, hora, minuto e segundo a um valor de data no oracle
Datas aritméticas são muito frequentes em aplicativos de banco de dados. No Oracle, você pode adicionar, subtrair e comparar colunas de DATA, mas não pode multiplicar ou dividir. O Oracle armazena o século, ano, mês, dia, hora, minuto e segundo, como parte da coluna de DATA.
Agora vamos dar uma olhada em como adicionar dia / hora / minuto / segundo em um valor de data. O Oracle espera um número constante na data aritmética como número de dias. Em outras palavras, você precisa converter as horas, minutos e segundos em uma fração de um dia e, em seguida, pode adicionar ou subtrair esse valor a partir de um valor de data. Aqui estão alguns exemplos:
- Adicione um dia.
select to_date('02-22-2008 10:30:30','mm-dd-yyyy hh24:mi:ss') today,
to_date('02-22-2008 10:30:30','mm-dd-yyyy hh24:mi:ss')+1 next_day
from dual;
TODAY NEXT_DAY
------------------------- -------------------------
02-22-08 10:30:30 02-23-08 10:30:30 - Adicione uma hora.
select to_date('02-22-08 10:30:30','mm-dd-yy hh24:mi:ss') today,
to_date('02-22-08 10:30:30','mm-dd-yy hh24:mi:ss')+ 1/24 next_hour
from dual;
TODAY NEXT_HOUR
------------------------ ------------------------
02-22-08 10:30:30 02-22-08 11:30:30 - Adicione um minuto.
select to_date('02-22-08 10:30:30','mm-dd-yy hh24:mi:ss') today,
to_date('02-22-08 10:30:30','mm-dd-yy hh24:mi:ss')+ 1/(24*60) next_min
from dual;
TODAY NEXT_MIN
------------------------ ------------------------
02-22-08 10:30:30 02-22-08 10:31:30 - Adicione um segundo.
select to_date('02-22-08 10:30:30','mm-dd-yy hh24:mi:ss') today,
to_date('02-22-08 10:30:30','mm-dd-yy hh24:mi:ss')+ 1/(24*60*60) next_sec
from dual;
TODAY NEXT_SEC
------------------------ ------------------------
02-22-08 10:30:30 02-22-08 10:30:31 - Subtraia um dia.
select to_date('02-22-2008 10:30:30','mm-dd-yyyy hh24:mi:ss') today,
to_date('02-22-2008 10:30:30','mm-dd-yyyy hh24:mi:ss') - 1 prev_day
from dual;
TODAY PREV_DAY
------------------------- -------------------------
02-22-08 10:30:30 02-21-08 10:30:30 - Subtraia uma hora.
select to_date('02-22-08 10:30:30','mm-dd-yy hh24:mi:ss') today,
to_date('02-22-08 10:30:30','mm-dd-yy hh24:mi:ss') - 1/24 prev_hour
from dual;
TODAY PREV_HOUR
------------------------ ------------------------
02-22-08 10:30:30 02-22-08 09:30:30 - Subtraia um minuto.
select to_date('02-22-08 10:30:30','mm-dd-yy hh24:mi:ss') today,
to_date('02-22-08 10:30:30','mm-dd-yy hh24:mi:ss') - 1/(24*60) prev_min
from dual;
TODAY PREV_MIN
------------------------ ------------------------
02-22-08 10:30:30 02-22-08 10:29:30 - Subtraia um segundo.
select to_date('02-22-08 10:30:30','mm-dd-yy hh24:mi:ss') today,
to_date('02-22-08 10:30:30','mm-dd-yy hh24:mi:ss') - 1/(24*60*60) prev_sec
from dual;
TODAY PREV_SEC
------------------------ ------------------------
02-22-08 10:30:30 02-22-08 10:30:29
O valor de data no Oracle tem dois componentes, data e hora. O Oracle armazena a hora, minuto e segundo, juntamente com a data. Como você pode ver a partir dos exemplos acima, a data aritmética no Oracle é simples e fácil de usar.