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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top