Oracle - Busca data/hora em milissegundos do campo de tipo de dados DATE
Pergunta
Eu tenho last_update_date
coluna definida como DATE
campo
Quero obter o tempo em milissegundos.
Atualmente tenho:
TO_CHAR(last_update_date,'YYYY-DD-MM hh:mi:ss am')
Mas também quero obter milissegundos.
pesquisei um pouco e pensei DATE
os campos não terão milissegundos.apenas TIMESTAMP
campos irão.
Existe alguma maneira de obter milissegundos?Não tenho opção de alterar o tipo de dados do campo.
Nenhuma solução correta
Outras dicas
Os campos DATE no Oracle armazenam os dados apenas por um segundo, portanto não há como fornecer algo mais preciso do que isso.Se quiser mais precisão, você deve usar outro tipo como TIMESTAMP.
Aqui é um link para outra pergunta do SO sobre a precisão de data e hora do Oracle.
Como diz o RC, o tipo de data suporta apenas uma granularidade até o segundo.
Se a conversão para o registro de data e hora não é realmente uma opção, e a adição de outra coluna numérica que apenas segura os milissegundos?
Essa opção seria mais pesada de lidar do que uma coluna de data e hora, mas poderia ser viável se a conversão do tipo não for possível.
Em uma situação semelhante em que não pude trocar os campos em uma tabela (não podia se dar ao luxo de 'quebrar' o software de terceiros), mas precisava de uma precisão subsegunda, adicionei uma tabela suplementar 1: 1 e uma inserção após a inserção Trigger na tabela original para postar o registro de data e hora na tabela suplementar.
Se você só precisar conhecer a ordem dos registros adicionados no mesmo segundo, poderá fazer a mesma coisa, apenas usando uma sequência como fonte de dados para o campo suplementar.