TIMESTAMP

O sujeito fala comigo ao telefone:
– Cria uma campo “timestamp’
Eu respondo:
– Claro, qual o nome do campo?
– Eu disse ‘timestamp’!
– Ok vou dar uma olhada depois ligo de volta.

Fiquei com medo de estar parecendo ignorante. Como não conheço direito quem está do outro lado da linha, achei que eu podia estar comendo bola. E lá fui eu fuçar nas tabelas do Oracle 9i para ver se eu entendia o que a minha santa ignorância não foi capaz de compreender. E não demorou muito para eu entender o que o nosso amigo estava querendo dizer. “Timestamp” era o nome do campo e o tipo de dados era lgicamente o tipo DATE!!!

Em algumas leituras recentes sobre o PL/SQL do Oracle descobri o motivo de tal estranheza. O Oracle só incluiu o tipo de dados TIMESTAMP a partir da verso 9i, que é justamente a verso com a qual trabalho. Como eu j trabalho com GNU/Linux a algum tempo procurei logo de cara o tipo de dados TIMESTAMP que sempre utilizei no PostgreSQL. Os sistemas Unix sempre armazenaram data e hora no formato TIMESTAMP, o padrão SQL já adota o TIMESTAMP a partir do SQL92, mas a ORACLE… só agora resolveu adotar.

Aí a besteira do meu colega na linha telefnica… ao invés de utilizar um campo com o nome “data_criacao” ou algo significativo, utilizou uma palavra reservada para nome da coluna. Bem, o livro que estou lendo da ORACLE PRESS realmente recomenda não utilizar palavras reservadas como nomes de colunas, mas antes do Oracle 9i, TIMESTAMP não era uma palavra reservada. O código fica bastante confuso, mesmo se estiver bem endentado. A chance de fazer uma confusão é grande…

O mais estranho é que quando dou um:

> SELECT data_no_formato_date FROM alguma_tabela

no Oracle ele no retorna hora, minuto e segundo. Você precisa esplicitar isso como em:
>SELECT to_char(data_no_formato_date, ‘DD-MM-YYYY HH24:MI:SS’) FROM alguma_tabela

Então eu descobri o milagre… você tem de setar uma variável de ambiente que controla o formato defaut de visualização, ou usar a função to_char para definir explicitamente o formato de exibição de datas como acima.

O legal da máscara que está aqui é que se eu dou um:

> SELECT data FROM alguma_tabela WHERE data = ’01-JAN-01′

O Oracle acha que o ano 1901, 1801 e 2001 são o mesmo ano. Não é uma maravilha?

Quer um conselho, não use DATE no Oracle 9i use o tipo de dados TIMESTAMP e de preferência ponha um nome melhor para o nome de suas colunas.

Compartilhe

Você pode gostar

pg_hba.conf

Introdução O arquivo pg_hba.conf (PostgreSQL Host-Based Authentication) é uma peça fundamental na configuração de segurança de qualquer instância PostgreSQL. Ele define as regras de autenticação

Tuning de SO (no Linux)

Introdução Tuning refere-se ao processo de ajustar e otimizar o desempenho de um sistema, software ou aplicação. A otimização do sistema operacional é uma etapa

Tipos de cargas dos bancos de dados

Introdução Cargas de dados referem-se aos diferentes tipos de operações e transações que um banco de dados deve processar. Essas cargas variam conforme o tipo

plugins premium WordPress