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. |