Este é o problema: estou lendo linhas com uma coluna de carimbo de data/hora de uma tabela e preciso garantir que o banco de dados retorne o carimbo de data/hora com uma largura fixa. Mas estou encontrando instâncias em que o banco de dados PostgreSQL retorna o carimbo de data/hora sem os zeros à direita.
A tabela em que estou trabalhando contém UUID
, Varchar
e Smallint
. Timestamp
Entendo que posso usar "to_char" conforme explicado aqui , mas o que realmente estou procurando é uma maneira de dizer ao PostgreSQL para sempre retornar o timestamp em um determinado formato, independentemente de zeros.
Aqui está um exemplo da saída da Timestamp
coluna que recebo, que contém um timestamp aparado:
"2014-09-26 17:17:45.999"
"2014-11-26 17:17:46"
"2015-03-26 17:17:46.001"
"2015-04-26 17:17:46.002"
"2015-05-26 17:17:46.003"
Isso naturalmente causará um problema para mim, pois a função que está lendo do banco de dados espera obter um registro de data e hora em um determinado formato.
Existe uma maneira de fazer o PostgreSQL sempre retornar um timestamp com uma largura fixa nas SELECT * FROM [table]
consultas?
Abaixo você vê como os campos são criados:
"created_UTC" timestamp NOT NULL DEFAULT (now() AT TIME ZONE 'UTC'),
"last_modified_UTC" timestamp NOT NULL DEFAULT (now() AT TIME ZONE 'UTC')
Parece-me que você precisa definir a coluna Timestamp para
CURRENT_TIMESTAMP(3)
. Isso definiria a coluna para retornar o tempo para a precisão de três dígitos que você está procurando.Depois de algumas idas e vindas, consegui descobrir o que realmente estava acontecendo e como consertar.
Isso foi útil porque me levou a entender que se você pedir ao JDBC para PostgreSQL para retornar um carimbo de data/hora como String, ele cortará automaticamente os zeros no final.
Exemplo:
retornará uma string potencialmente encurtada (aparada) com os últimos zeros removidos.
Enquanto:
na verdade, retornará um objeto Java Timestamp, sem problemas de corte.
Este é um comportamento inesperado e não tenho certeza de qual pode ser o raciocínio por trás do corte de strings, mas pelo menos descobri onde está o problema e como corrigi-lo.
Muito obrigado pela ajuda. Viva!