PL / SQL - Data e Hora

Neste capítulo, discutiremos a data e a hora em PL / SQL. Existem duas classes de tipos de dados relacionados a data e hora no PL / SQL -

  • Tipos de dados de data e hora
  • Tipos de dados de intervalo

Os tipos de dados Datetime são -

  • DATE
  • TIMESTAMP
  • TIMESTAMP COM FUSO HORÁRIO
  • TIMESTAMP COM FUSO HORÁRIO LOCAL

Os tipos de dados de intervalo são -

  • INTERVALO ANO A MÊS
  • INTERVAL DAY TO SECOND

Valores de campo para tipos de dados de data e hora e intervalo

Ambos datetime e interval tipos de dados consistem em fields. Os valores desses campos determinam o valor do tipo de dados. A tabela a seguir lista os campos e seus valores possíveis para datas e intervalos.

Nome do Campo Valores de data e hora válidos Valores de intervalo válidos
ANO -4712 a 9999 (excluindo ano 0) Qualquer número inteiro diferente de zero
MÊS 01 a 12 0 a 11
DIA 01 a 31 (limitado pelos valores de MÊS e ANO, conforme regras do calendário do local) Qualquer número inteiro diferente de zero
HORA 00 a 23 0 a 23
MINUTO 00 a 59 0 a 59
SEGUNDO

00 a 59,9 (n), onde 9 (n) é a precisão dos segundos fracionários de tempo

A parcela 9 (n) não é aplicável para DATA.

0 a 59,9 (n), onde 9 (n) é a precisão do intervalo de segundos fracionários
TIMEZONE_HOUR

-12 a 14 (a faixa acomoda as mudanças do horário de verão)

Não aplicável para DATE ou TIMESTAMP.

Não aplicável
TIMEZONE_MINUTE

00 a 59

Não aplicável para DATE ou TIMESTAMP.

Não aplicável
TIMEZONE_REGION Não aplicável para DATE ou TIMESTAMP. Não aplicável
TIMEZONE_ABBR Não aplicável para DATE ou TIMESTAMP. Não aplicável

Os tipos de dados e funções de data e hora

A seguir estão os tipos de dados Datetime -

ENCONTRO

Ele armazena informações de data e hora em tipos de dados de caracteres e números. É feito de informações sobre século, ano, mês, data, hora, minuto e segundo. É especificado como -

TIMESTAMP

É uma extensão do tipo de dados DATE. Ele armazena o ano, mês e dia do tipo de dados DATE, junto com os valores de hora, minuto e segundo. É útil para armazenar valores de tempo precisos.

TIMESTAMP COM FUSO HORÁRIO

É uma variante de TIMESTAMP que inclui um nome de região de fuso horário ou um deslocamento de fuso horário em seu valor. A diferença de fuso horário é a diferença (em horas e minutos) entre a hora local e UTC. Este tipo de dados é útil para coletar e avaliar informações de datas em regiões geográficas.

TIMESTAMP COM FUSO HORÁRIO LOCAL

É outra variante de TIMESTAMP que inclui um deslocamento de fuso horário em seu valor.

A tabela a seguir fornece as funções Datetime (em que x tem o valor datetime) -

S.Não Nome e descrição da função
1

ADD_MONTHS(x, y);

Adiciona y meses para x.

2

LAST_DAY(x);

Retorna o último dia do mês.

3

MONTHS_BETWEEN(x, y);

Retorna o número de meses entre x e y.

4

NEXT_DAY(x, day);

Retorna a data e hora do dia seguinte apósx.

5

NEW_TIME;

Retorna o valor de hora / dia de um fuso horário especificado pelo usuário.

6

ROUND(x [, unit]);

Rodadas x.

7

SYSDATE();

Retorna a data e hora atual.

8

TRUNC(x [, unit]);

Trunca x.

Funções de carimbo de data / hora (em que x tem um valor de carimbo de data / hora) -

S.Não Nome e descrição da função
1

CURRENT_TIMESTAMP();

Retorna um TIMESTAMP WITH TIME ZONE contendo o tempo da sessão atual junto com o fuso horário da sessão.

2

EXTRACT({ YEAR | MONTH | DAY | HOUR | MINUTE | SECOND } | { TIMEZONE_HOUR | TIMEZONE_MINUTE } | { TIMEZONE_REGION | } TIMEZONE_ABBR ) FROM x)

Extrai e retorna um ano, mês, dia, hora, minuto, segundo ou fuso horário de x.

3

FROM_TZ(x, time_zone);

Converte o TIMESTAMP xeo fuso horário especificado por time_zone em um TIMESTAMP WITH TIMEZONE.

4

LOCALTIMESTAMP();

Retorna um TIMESTAMP contendo a hora local no fuso horário da sessão.

5

SYSTIMESTAMP();

Retorna um TIMESTAMP WITH TIME ZONE contendo a hora atual do banco de dados junto com o fuso horário do banco de dados.

6

SYS_EXTRACT_UTC(x);

Converte o TIMESTAMP WITH TIMEZONE x em um TIMESTAMP contendo a data e a hora em UTC.

7

TO_TIMESTAMP(x, [format]);

Converte a string x em um TIMESTAMP.

8

TO_TIMESTAMP_TZ(x, [format]);

Converte a string x em um TIMESTAMP WITH TIMEZONE.

Exemplos

Os seguintes snippets de código ilustram o uso das funções acima -

Example 1

SELECT SYSDATE FROM DUAL;

Output -

08/31/2012 5:25:34 PM

Example 2

SELECT TO_CHAR(CURRENT_DATE, 'DD-MM-YYYY HH:MI:SS') FROM DUAL;

Output -

31-08-2012 05:26:14

Example 3

SELECT ADD_MONTHS(SYSDATE, 5) FROM DUAL;

Output -

01/31/2013 5:26:31 PM

Example 4

SELECT LOCALTIMESTAMP FROM DUAL;

Output -

8/31/2012 5:26:55.347000 PM

Os tipos de dados e funções do intervalo

A seguir estão os tipos de dados de intervalo -

  • IINTERVAL ANO A MÊS - Armazena um período de tempo usando os campos de data e hora ANO e MÊS.

  • INTERVAL DAY TO SECOND - Armazena um período de tempo em termos de dias, horas, minutos e segundos.

Funções de intervalo

S.Não Nome e descrição da função
1

NUMTODSINTERVAL(x, interval_unit);

Converte o número x em um INTERVAL DAY TO SECOND.

2

NUMTOYMINTERVAL(x, interval_unit);

Converte o número x em um INTERVAL YEAR TO MONTH.

3

TO_DSINTERVAL(x);

Converte a string x em um INTERVAL DAY TO SECOND.

4

TO_YMINTERVAL(x);

Converte a string x em um INTERVAL YEAR TO MONTH.