TIMESTAMP and TIMEZONE

Nos posts anteriores sempre trabalhamos com datas através do tipo de dados DATE, no qual armazena tanto a data, como horas, minutos e segundos. Temos a nossa disposição ainda outro tipos de dados como o TIMESTAMP que armazena a mesma coisa que o DATE, mas em em adição, armazena também frações de segundos. Mas e se a nossa aplicação precisar trabalhar com diferentes tipos de fuso horário? Bem os dois tipos de dados citados anteriormente não são capazes de fazer isto. Mas o Oracle provê ainda mais dois tipos de dados para estas situações, que é o TIMESTAMP WITH LOCAL TIME ZONE e o TIMESTAMP WITH TIME ZONE. Lembrando que sempre temos 3 fusos horários que podemos nos referir. o UTC que é o horário mundial, que antigamente era referido como Greenwich. O fuso horário do banco de dados que podemos acessar por DBTIMEZONE, e o fuso horário da seção do usuário que pode ser acessado por SESSIONTIMEZONE como mostra a imagem abaixo.

DBTIMEZONE E SESSIONTIMEZONE

DBTIMEZONE E SESSIONTIMEZONE

O recomendado conforme mostra foto é que o fuso horário do banco seja o UTC, pois evita que o servidor perca tempo calculado as diferenças de fuso horário. Lembrando que podemos nos referir ao fuso horário de dois modos. Nos referindo a sua diferença no uso horário como no caso do de Brasília é -03:00 ou nos referindo pelo nome do local, no caso é Brazil/West, mas que também temos o East, DeNoronha e Acre (sim! é isso mesmo! rsrsrs). Lembrando que pelo nome tem as suas respectivas abreviações. O mais recomendado é usar não a diferença de fuso horário diretamente. Mas sim pelo nome do local, que no caso o banco pode configurar automaticamente o horário de verão. Caso deseje ver todos os nomes e suas abreviações, rode a seguinte query: SELECT TZABBREV, TZNAME FRO V$TIMEZONE_NAMES; Podemos também acessar o data atual e o timestamp atual com o fuso horário através das respectivas variáveis: current_date e current_timestamp. Veja o exemplo abaixo.

Várias funções de DATE e TIMESTAMP

Várias funções de DATE e TIMESTAMP

Podemos também usar o localtimestamp que nos refere a hora local da sessão do usuário. Tome cuidado pois o sysdate e o current_date nem sempre terão valores iguais. O sysdate retorna a hora do servidor em que o banco esta rodando, já o current_date é da sessão do usuário. Prestem atenção também que o localtimestamp retorna um timestamp sem fuso horário da sessão do usuário. Enquanto o sytimestamp retorna a data com fuso horário do servidor e o current_timestamp da sessão do usuário. Se quisermos converter uma data com hora para outro fuso horário podemos utilizar a função NEW_TIME, que recebe uma data como argumento e mais dois argumentos que é o fuso horário da data em questão que foi passada como argumento e ao novo fuso horário, retornando assim uma nova data baseada na diferença entre os dois fuso horários escolhidos. Pareceu complicado? Mas não é, veja um exemplo:

NEW_TIME

NEW_TIME

Podemos ver no exemplo acima a data atual do banco de dados, e que depois utilizamos essa mesma data na função NEW_TIME e informamos que essa mesma data se encontra no fuso horário “AST”, que significa Atlântico, e que queremos converter ela para “PST”, que significa pacífico. No próximo post teremos ainda mais funções de converter fuso horários. Até a próxima!

Anúncios

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Marcado com: , ,
Publicado em Sem categoria

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Esse Blog é reconhecido pela
Certificações
Sou articulista

Clique para seguir este blog e receber notificações via email de novos posts.

Tércio Costa

Tércio Costa

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Links Pessoais

Serviços verificados

Visualizar Perfil Completo →

Total de Visualizações da Página
  • 138.087 Visualizações
%d blogueiros gostam disto: