pl sql datetime format
Aprenda sobre o formato PL SQL Datetime e algumas funções úteis sobre Datetime, Timestamp e Interval:
No PL / SQL Gatilhos no PL SQL series , aprendemos sobre seus tipos, uso e vantagens.
Neste artigo, exploraremos a data e a hora em PL / SQL e algumas das funções nos tipos de dados Datetime, Timestamp e Interval. Além disso, faremos algumas operações básicas em Datetime e Interval.
Vamos começar com a discussão !!
O que você aprenderá:
Formato PL SQL Datetime
PL / SQL tem um tipo de dados de data / hora que nos permite manter e calcular datas, intervalos e horas. A variável do tipo data ou hora contém um valor denominado DateTime. A variável que mantém o tipo de dados do intervalo é chamada de intervalo. Cada um desses tipos de dados possui campos que definem o valor.
Os tipos de dados DateTime estão listados abaixo:
- TIMESTAMP
- TIMESTAMP COM FUSO HORÁRIO
- TIMESTAMP COM FUSO HORÁRIO LOCAL
- ENCONTRO
Os tipos de dados de intervalo estão listados abaixo:
- INTERVAL DAY TO SECOND
- INTERVALO ANO A MÊS
ENCONTRO
Os datetimes de comprimento fixo são armazenados no tipo de dados DATE. Compreende a hora do dia a partir da meia-noite em segundos. A seção de data aponta para o primeiro dia do mês atual e a seção de tempo aponta para meia-noite. Ele contém informações de data e hora em tipos de dados de número e caractere.
SYSDATE é uma função de data que busca a hora e a data atuais. O intervalo de datas adequado é de 1º de janeiro de 4712 aC a 31 de dezembro de 9999 dC. Os valores dos caracteres no formato padrão (determinados pelo parâmetro de inicialização do Oracle NLS_DATE_FORMAT) são convertidos naturalmente por PL / SQL em valores DATE.
Podemos aplicar operações matemáticas como adição e subtração em datas. PL / SQL interpreta literais inteiros na forma de dias. Por exemplo, SYSDATE + 1 ponto para amanhã.
TIMESTAMP
O tipo de dados do carimbo de data / hora é uma extensão do tipo de dados DATE. É usado para conter o ano, mês, hora e segundo. O formato de registro de data e hora padrão é determinado pelo parâmetro de inicialização do Oracle NLS_TIMESTAMP_FORMAT.
Sintaxe:
TIMESTAMP((precision))Aqui, a precisão não é um parâmetro obrigatório e aponta para a contagem do número de dígitos que está na parte fracionária do campo de segundos. A precisão deve ser qualquer literal inteiro de 0 a 9. O valor padrão é definido como 6.
TIMESTAMP COM FUSO HORÁRIO
Este tipo de dados é uma extensão do tipo de dados TIMESTAMP e contém deslocamento de fuso horário. O deslocamento do fuso horário é a diferença de tempo (em horas e minutos) entre a hora local e o Tempo Universal Coordenado (UTC).
O carimbo de data / hora padrão com formato de fuso horário é determinado pelo parâmetro de inicialização NLS_TIMESTAMP_TZ_FORMAT do Oracle. Sintaxe:
TIMESTAMP((precision)) WITH TIME ZONEAqui, a precisão não é um parâmetro obrigatório e aponta para a contagem do número de dígitos que está na parte fracionária do campo de segundos. A precisão deve ser qualquer literal inteiro de 0 a 9. O valor padrão é definido como 6.
como o java é diferente do c ++
Podemos mencionar o fuso horário com símbolos. Pode ser longo, como ‘US / Pacific’ ou, resumidamente, ‘PDT’, ou uma combinação de ambos. Portanto, esse tipo de dados é usado para cobrir e computar informações em localizações geográficas.
TIMESTAMP COM FUSO HORÁRIO LOCAL
Timestamp com tipo de dados de fuso horário local é uma extensão do tipo de dados TIMESTAMP e contém deslocamento de fuso horário. O deslocamento do fuso horário é a diferença de tempo (em horas e minutos) entre a hora local e o Tempo Universal Coordenado (UTC).
Sintaxe:
TIMESTAMP ((precision)) WITH LOCAL TIME ZONEAqui, a precisão não é um parâmetro obrigatório e aponta para a contagem do número de dígitos que está na parte fracionária do campo do segundo. A precisão deve ser qualquer literal inteiro de 0 a 9. O valor padrão é definido como 6.
TIMESTAMP WITH LOCAL TIME ZONE é diferente de TIMESTAMP WITH TIME ZONE devido ao fato de que enquanto inserimos um valor no banco de dados, o valor é definido como o fuso horário do banco de dados e o deslocamento do fuso horário não é mantido na coluna do banco de dados. No entanto, ao buscar o valor, ele é retornado na sessão de fuso horário local.
INTERVALO ANO A MÊS
Este tipo de dados é usado para armazenar e calcular intervalos de anos e meses.
Sintaxe:
INTERVAL YEAR ((precision)) TO MONTHAqui, a precisão é a contagem do número de dígitos no campo de um ano. A precisão deve ser qualquer literal inteiro de 0 a 4. O valor padrão é definido como 2.
INTERVAL YEAR TO SECOND
O intervalo de ano para segundo tipo de dados é usado para armazenar e calcular intervalos de dias, horas, minutos e segundos.
Sintaxe:
INTERVAL DAY ((l_precision)) TO SECOND ((fractional_s_precision))Aqui o l_precision e fracionário_precisão são a contagem do número de dígitos no campo dias e segundos, respectivamente.
A precisão deve ser qualquer literal inteiro de 0 a 9. Os valores padrão são definidos como 2 e 6, respectivamente.
Valores de campo: data e hora e intervalo
- SEGUNDO: Os valores para o intervalo válido de DateTime vão de 00 a 59,9 (m), onde m denota os segundos fracionários de tempo. Os valores para o intervalo de intervalo válido vão de 00 a 59,9 (m), onde m denota a fração de segundos do intervalo.
- MINUTO: Os valores do intervalo válido de DateTime vão de 00 a 59. Os valores do intervalo válido vão de 0 a 59.
- HORA: Os valores do intervalo válido de DateTime vão de 00 a 23. Os valores do intervalo válido de intervalo vão de 0 a 23.
- DIA: Os valores válidos para o intervalo DateTime vão de 01 a 31 (limitados pelos valores de YEAR e MONTH, conforme as regras do calendário local). O valor para um intervalo de intervalo válido é qualquer número inteiro diferente de zero.
- MÊS: Os valores do intervalo válido de DateTime vão de 01 a 12. Os valores do intervalo válido vão de 0 a 11.
- ANO: Os valores para o intervalo válido de DateTime vão de -4712 a 9999, não incluindo o ano 0. O valor para o intervalo válido de intervalo é qualquer número inteiro diferente de zero.
- TIMEZONE_HOUR: Os valores para o intervalo válido de DateTime vão de -12 a 14, incluindo mudanças no horário de verão. Isso não se aplica ao intervalo de intervalo válido.
- TIMEZONE_MINUTE: Os valores para um intervalo válido de DateTime vão de 00 a 59. Isso não se aplica ao intervalo válido.
- TIMEZONE_REGION: Os valores para um intervalo válido de DateTime não são aplicáveis para DATE ou TIMESTAMP. Isso não se aplica a um intervalo de intervalo válido.
- TIMEZONE_ABBR: Os valores para um intervalo válido de DateTime não são aplicáveis para DATE ou TIMESTAMP. Isso não se aplica ao intervalo de intervalo válido.
Funções PL SQL no Datetime
Aqui, m e n contêm os valores da data e hora.
| Sim. Não. | Nome | Objetivos |
|---|---|---|
| 7 | SYSDATE () | Busca a data e hora atual. |
| 1 | LAST_DAY (m) | Coleta o último dia do mês. |
| dois | ADD_MONTHS (m, n) | Soma m e n meses. |
| 3 | MONTHS_BETWEEN (m, n) | Busca a contagem do número de meses entre me n. |
| 4 | NEXT_DAY (m, dia) | Busca a data e hora do dia seguinte após m. |
| 5 | PRÓXIMA VEZ | Obtém a hora / dia do fuso horário solicitado pelo usuário. |
| 6 | ROUND (m (, unidade)) | Rodadas m. |
| 8 | TRUNC (m (, unidade)) | Trunca m. |
Funções PL SQL em Timestamp
Aqui, m contém o valor do carimbo de data / hora.
ferramentas de que você precisa para desenvolvimento web
| Sim. Não. | Nome | Objetivos |
|---|---|---|
| 7 | TO_TIMESTAMP_TZ (m, (formato)) | Converte a string m em um TIMESTAMP WITH TIMEZONE. |
| 1 | CURRENT_TIMESTAMP () | Busca um TIMESTAMP WITH TIMEZONE tendo a sessão atual e o fuso horário da sessão. |
| dois | FROM_TZ (m, fuso horário) | Converte m TIMESTAMP e menciona time_zone em TIMESTAMP WITH TIMEZONE. |
| 3 | LOCALTIMESTAMP () | Busca um TIMESTAMP com a hora local no fuso horário da sessão. |
| 4 | SYSTEMTIMESTAMP () | Busca um TIMESTAMP WITH TIMEZONE tendo a hora e o fuso horário do banco de dados atuais. |
| 5 | SYS_EXTRACT_UTC (m) | Converte m TIMESTAMP WITH TIMEZONE em TIMESTAMP com data e hora em UTC. |
| 6 | TO_TIMESTAMP (m, (formato)) | Converte a string m em um TIMESTAMP. |
Implementação de código com funções Datetime e Timestamp:
BEGIN /* get the current date and time */ DBMS_OUTPUT.put_line ('The output of SYSDATE is:'|| SYSDATE); /* get the TIMESTAMP WITH TIME ZONE with database time and time zone */ DBMS_OUTPUT.put_line ('The output of SYSTIMESTAMP is:' ||SYSTIMESTAMP); /* get the TIMESTAMP with local time in session time zone */ DBMS_OUTPUT.put_line ('The output of LOCALTIMESTAMP:' ||LOCALTIMESTAMP); /*get the TIMESTAMP WITH TIME ZONE with present session time with session time zone */ DBMS_OUTPUT.put_line ('The output of CURRENT_TIMESTAMP:'||CURRENT_TIMESTAMP); /*convert string to TIMESTAMP*/ DBMS_OUTPUT.put_line ('The output of TIMESTAMP:'||TO_TIMESTAMP('12-JAN-2011')); /*to add months*/ DBMS_OUTPUT.put_line ('The output of ADD_MONTHS:'||ADD_MONTHS(SYSDATE,1)); /*to get date and time of following day*/ DBMS_OUTPUT.put_line ('The output of NEXT_DAY:'||NEXT_DAY(SYSDATE,'MONDAY')); /*to truncate date */ DBMS_OUTPUT.put_line ('The output of TRUNC:'||TRUNC(SYSDATE)); /*to get the last day of month */ DBMS_OUTPUT.put_line ('The output of LAST_DAY:'||LAST_DAY (SYSDATE)); END; / Resultado do código acima:

Funções PL SQL no intervalo
| Sim. Não. | Nome | Objetivos |
|---|---|---|
| 1 | NUMTODSINTERVAL (m, intervalo) | Transforma o número m em INTERVAL DAY TO SECOND. |
| dois | NUMTOYMINTERVAL (m, intervalo) | Transforma o número m em INTERVAL YEAR TO MONTH. |
| 3 | TO_DSINTERVAL (m) | Transforma a string m em INTERVAL DAY TO SECOND. |
| 4 | TO_YMINTERVAL (m) | Transforma a string m em INTERVAL YEAR TO MONTH. |
Operações aritméticas em data e hora e intervalo
PL / SQL permite que você crie expressões DateTime e intervalo.
A lista de operadores que podem ser aplicados é:
- Se o primeiro operando for DateTime e o segundo operando for um intervalo, e quisermos aplicar o operador (+) a eles, o valor do resultado será do tipo DateTime.
- Se o primeiro operando for DateTime e o segundo operando for um intervalo, e quisermos aplicar o operador (-) a eles, o valor do resultado será do tipo DateTime.
- Se o primeiro operando for intervalo e o segundo operando for DateTime, e quisermos aplicar o operador (+) a eles, o valor do resultado será do tipo DateTime.
- Se o primeiro operando for DateTime e o segundo operando for DateTime, e quisermos aplicar o operador (-) a eles, o valor do resultado será do tipo intervalo.
- Se o primeiro operando for intervalo e o segundo operando for um intervalo, e quisermos aplicar o operador (+) a eles, o valor do resultado será do tipo intervalo.
- Se o primeiro operando for intervalo e o segundo operando for um intervalo, e quisermos aplicar o operador (-) a eles, o valor do resultado será do tipo intervalo.
- Se o primeiro operando for intervalo e o segundo operando for numérico, e quisermos aplicar o operador (*) a eles, o valor do resultado será do tipo intervalo.
- Se o primeiro operando for numérico e o segundo operando for um intervalo, e quisermos aplicar o operador (*) a eles, o valor do resultado será do tipo intervalo.
- Se o primeiro operando for intervalo e o segundo operando for numérico, e quisermos aplicar o operador (/) a eles, o valor do resultado será do tipo intervalo.
Implementação de código com algumas operações aritméticas em Datetime e Interval.
DECLARE c_dt TIMESTAMP; r_dt TIMESTAMP; s_dt TIMESTAMP; BEGIN c_dt := SYSTIMESTAMP; r_dt:= c_dt + TO_DSINTERVAL ('1600 5:20:1'); DBMS_OUTPUT.PUT_LINE ('Addition of datetime and Interval:' ||r_dt); s_dt:= c_dt - TO_DSINTERVAL ('1600 5:20:1'); DBMS_OUTPUT.PUT_LINE ('Subtraction of datetime and Interval:' || s_dt); END; A saída do código acima:

Explicação do código acima:
- No código, (‘1600 5: 20: 1’) significa 1600 dias, 5 horas, 20 minutos e 1 segundo .
- Na primeira saída, o primeiro operando é DateTime e o segundo operando é um intervalo. Ao adicioná-los, obtivemos uma data como 24-DEC com hora em AM.
- Na segunda saída, o primeiro operando é DateTime e o segundo operando é um intervalo. Subtraindo a primeira da segunda, obtemos uma data como 20-MAR com hora em PM.
Perguntas e respostas mais frequentes
P # 1) Qual é o carimbo de data / hora atual?
Responda: O carimbo de data / hora atual ou CURRENT_TIMESTAMP descreve um carimbo de data / hora que depende da leitura do relógio do dia durante a execução de uma instrução SQL no servidor.
P # 2) O que Sysdate retorna no Oracle?
Responda: A função Sysdate () busca a data e hora atuais configuradas no sistema operacional onde o banco de dados está localizado. O tipo de dados do valor que é retornado por ele é DATE.
P # 3) Qual função PL / SQL fornecerá a data e hora do sistema atual?
Responda: A função PL / SQL que fornece a data e hora do sistema atual é SYSDATE ().
P # 4) O que é DUAL SQL?
Responda: DUAL é uma tabela de banco de dados criada por Oracle por padrão junto com um dicionário de dados. Ele contém uma linha e uma coluna. DUAL é propriedade da SYS, mas pode ser usado por todos os usuários.
P # 5) Como você declara uma variável de data no PL SQL?
Responda: Podemos declarar uma variável de data em PL / SQL com a sintaxe fornecida a seguir:
DECLARE stdt DATE := to_date ('06/06/2006', 'DD/MM/YYYY');P # 6) Qual é o formato de data no Oracle?
Responda: O formato de data padrão no Oracle para entrada e saída é ‘DD / MON / YY’. Isso é configurado pelo valor no parâmetro NLS_DATE_FORMAT.
Conclusão
Neste tutorial do formato PL SQL Datetime, discutimos em detalhes alguns conceitos básicos de data e hora PL / SQL que são essenciais para usá-los na programação.
Cobrimos os seguintes tópicos listados abaixo:
- Data e hora.
- Funções relacionadas a data e hora, carimbo de data / hora e intervalo.
- Operações aritméticas em data e hora e intervalo.
- Valores de campos em Datetime e Interval.
Leitura recomendada
- Funções de data e hora em C ++ com exemplos
- Tutorial Python DateTime com exemplos
- C # DateTime Tutorial: Trabalhando com data e hora em C # com exemplo
- Subprogramas: procedimentos e funções PL SQL com exemplos
- Funções de data do VBScript: funções Date Format, DateAdd e cDate
- Tutorial PL SQL para iniciantes com exemplos | O que é PL / SQL