Converter Fuso Horário

Agora veremos como algumas funções podem converter fuso horário, muito útil se a sua aplicação irá rodar em diferentes partes do mundo com fuso horários diferentes ou se desejar fazer o teste da certificação SQL Expert. Vamos começar por alguns exemplos.

1

Primeiramente utilizamos a função LOCALTIMESTAMP que já vimos anteriormente e que servirá de base para as outras funções. A primeira função de conversão utilizada foi então a FROM_TZ que recebe um TIMESTAMP como argumento e também um fuso horário que tanto pode ser no formato que utilizei como o identificando claramente o fuso horário ou no formato de carácteres da região desejada. O resultado é um TIMESTAMP WITH TIME ZONE. A segunda função de conversão utilizada na imagem acima foi a TO_TIMESTAM_TZ, na qual recebe um argumento em carácter e também o seu formato descrevendo um TIMESTAMP, opcionalmente podemos passar parâmetros NLS. O resultado também é um TIMESTAMP WITH TIME ZONE. E a terceira e última função utilizada foi a função CAST. Com o uso dessa função, podemos converter uma expressão em algum tipo de dado. No exemplo acima utilizamos a conversao para TIMESTAMP WITH LOCAL TIME ZONE, ams você poderá testar outras conversões para outros tipos de dados que também não sejam datas. Vejamos agora mais algumas funções antes de terminar o nosso post

2

Primeiramente a função EXTRACT. O primeiro parâmetro dessa função é exatamente o que vamos extrair do segundo parâmetro. As escolhas de extração podem ser: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, TIMEZONE_HOUR, TIMEZONE_MINUTE, TIMEZONE_REGION e TIMEZONE_ABBR. Podemos extrair essa informações dos seguintes tipos de dados: DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE, INTERVAL YEAR TO MONTH e INTERVAL DAY TO SECOND. Claro que só poderemos extrair aquilo que o nosso segundo argumento possui. Não adianta tentar extrair TIMEZONE_HOUR de um DATE. Já na segunda função, SYS_EXTRACT_UTC, exclui a informação do fuso horário e transforma em um TIMESTAMP com a hora UTC, que é a que tem o fuso horário +00:00. No exemplo abaixo podemos perceber que o retorno da função foi a mesma coisa da função SYSTIMESTAMP mas com a remoção do fuso horário, já que o retorno é apenas um TIMESTAMP sem fuso horário, e que a hora foi modificada para refletir o novo fuso horário, que no caso é o UTC ou 00:00.

3

Nessa última imagem deste post, podemos ver duas funções interessantes. a primeira é a AT TIME ZONE. Essa função converte um TIMEZONE para outro, no caso eu utilizei o DBITMEZONE. O primeiro argumento que utilizei é o SYSTIMESTAMP que tem a hora em 18:40 com TIMEZONE -03:00. Podem perceber que na mesma query eu retornei o DBTIMESTAMP e o SESSIONTIMESTAMP. O TIMEZONE do DBTIMESTAMP geralmente é o UCT, ou seja, +00:00. Eu convertei então com essa função o SYSTIMESTAMP para o TIMEZONE do DBTIMEZONE que no caso e +00:00. Sendo assim adicionamos mais 3 horas que é a diferença do SESSIONTIMEZONE e o DBTIMEZONE. Como segundo argumento podemos utilizar mais opções do que o DBTIMEZONE, podemos utilizar o nome de um fuso horário, o fuso horário explicito(+03:00) e etc. Na segunda função, a AT LOCAL, transforma um timestamp em um com o horário local. Na parte de baixo dessa última imagem acima podemos ver uma queryem que primeiro retornamos o LOCALTIMESTAMP com o fuso horário +05:00 (que a hora é 12:41)e depois utilizamos a função AT LOCAL utilizando a mesma hora da função anterior que agora retorna a mesma hora so que do local “East Coast Time”

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
2 comentários em “Converter Fuso Horário
  1. Tercio, tudo bom?
    Cara, me tira uma dúvida, vamos ver se isso é possível… você sabe se existe algum pacote do próprio Oracle onde vc possa passar as localizações (latitude, longitude) e o banco retornar o fuso horário da localização que foi passada?
    Fico no aguardo! Um abraço!

    Curtir

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.077 Visualizações
%d blogueiros gostam disto: