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.