Converter VARCHAR para TIMESTAMP com milleseconds ERROR: date/time field value out of range

From: Cleiton Luiz Domazak <cleitondomazak(at)gmail(dot)com>
To: pgsql-pt-geral(at)lists(dot)postgresql(dot)org
Subject: Converter VARCHAR para TIMESTAMP com milleseconds ERROR: date/time field value out of range
Date: 2018-10-09 10:00:30
Message-ID: CAKx1C8E=oCynMNtoyoTjvcmjYi7UHdXDX=T470CX9S9fVEAqNA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-pt-geral

Eu tenho um campo com o segundo VARCHAR "2018-07-05T16:14:27.1427" e eu o
converto para timestamp com o seguinte select:

select last_run, to_char(to_timestamp(last_run,'yyyy-MM-dd HH24:mi:ss') -
interval '2 hour','yyyy-MM-dd"T"HH24:mi:ss"Z"') as new_last_run from
schedule_tasks;

Até a versão 9.6.10 do PostgreSQL tudo corria bem, mas agora estamos
migrando para a versão 10.5 e esse erro começou a ocorrer. O mesmo acontece
na versão 11.

Já fiz várias mudanças de datastyle e timezone e nada interfere, inclusive
todas as 3 versões testadas(9.6.10, 10.5 e 11) estavam com o mesmo conf.

O que eu notei é que na 9.6, quando eu tenho um campo com milleseconds com
mais de 3 caracteres, o primeiro digito é adicionado aos segundos:
2018-07-05T16:14:2*8.427*.

Detalhe, se o campo tiver apenas 3 caracteres em milleseconds, funciona!

Não sei se isso foi uma mudança realizada nas novas versões e terei que
lidar com isso, ou se trata de um bug.

Responses

Browse pgsql-pt-geral by date

  From Date Subject
Next Message Cleiton Luiz Domazak 2018-10-09 12:24:25 Re: Converter VARCHAR para TIMESTAMP com milleseconds ERROR: date/time field value out of range
Previous Message Vinicius Santos 2018-10-04 15:09:17 Descobrir arquiterura dos arquivoz