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

From: Cleiton Luiz Domazak <cleitondomazak(at)gmail(dot)com>
To: osvaldo(dot)kussama(at)gmail(dot)com, pgsql-pt-geral(at)lists(dot)postgresql(dot)org
Subject: Re: Converter VARCHAR para TIMESTAMP com milleseconds ERROR: date/time field value out of range
Date: 2018-10-09 13:26:42
Message-ID: CAKx1C8E_ntkD53-g2M3BjJgxf9TP-r2fYq45qaH1VgwGiRZUVA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-pt-geral

On Tue, Oct 9, 2018 at 2:24 PM Osvaldo Kussama <osvaldo(dot)kussama(at)gmail(dot)com>
wrote:

> Em 09/10/2018, Cleiton Luiz Domazak<cleitondomazak(at)gmail(dot)com> escreveu:
> > On Tue, Oct 9, 2018 at 1:21 PM Osvaldo Kussama <
> osvaldo(dot)kussama(at)gmail(dot)com>
> > wrote:
> >
> >> Em 09/10/2018, Cleiton Luiz Domazak<cleitondomazak(at)gmail(dot)com> escreveu:
> >> > 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.
> >> >
> >>
> >> Não entendi sua dúvida.
> >> Cada 1.000 milisegundos não corresponde exatamente a 1 segundo?
> >>
> > Exato, minha dúvida é, por que a partir da versão 10, esse comportamente
> > mudou, e ocorre um erro ao converter o mesmo valor.
> >
> > Se o valor de MS for até 999 tudo certo, mas caso seja maior que 999, na
> > versão 10 ocorre erro.
> >
>
>
> Nada como a documentação:
> https://www.postgresql.org/docs/current/static/release-10.html
> "E.6.3.6. Functions
>

Primeiramente, obrigado pelas respotas Osvaldo.

Apenas lembre-se sempre de dar um "reply all", pois está vindo apenas para
mim.

>
>
> Make to_timestamp() and to_date() reject out-of-range input fields
> (Artur Zakirov)
>
> For example, previously to_date('2009-06-40','YYYY-MM-DD') was
> accepted and returned 2009-07-10. It will now generate an error."
>
> Osvaldo
>

In response to

Browse pgsql-pt-geral by date

  From Date Subject
Next Message Cleiton Luiz Domazak 2018-10-09 13:28:01 Re: Converter VARCHAR para TIMESTAMP com milleseconds ERROR: date/time field value out of range
Previous Message Arthur Nascimento 2018-10-09 13:23:05 Re: Converter VARCHAR para TIMESTAMP com milleseconds ERROR: date/time field value out of range