Re: Question de dates

From: Stéphane Bunel <stephane+pgfr(at)bpf(dot)st>
To: Jean-Paul Argudo <jean-paul(at)postgresqlfr(dot)org>
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: Question de dates
Date: 2008-07-15 09:16:23
Message-ID: 487C6AE7.9030709@bpf.st
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Jean-Paul Argudo wrote:
> Ok!
>
>
> J'ai effectivement reproduit ton "bug" avec le 14/07/2008 comme date de
> référence.
>
> Suite à ça, 'RhodiumToad' sur l'IRC (irc.freenode.net, canal
> #postgresql), m'a donné l'explication de ce comportement "curieux".
>
> En fait, il ne s'agit pas du tout d'un bug, mais d'un comportement
> induit par la fonction age().

It's not a Bug, it's a Feature! Visuellement c'est plutôt troublant ;-)

> age() renvoie une valeur "symbolique" exprimant la différence temporelle
> entre deux dates.
>
> Cependant, la sortie de cette fonction perd toute notion de la valeur
> précise de la longueur des intervalles une fois qu'elles sont exprimées
> en unités absolues (mois, jours, heures..).
>
> Ainsi, entre '1 mon 30 days 03:54' et '2 mons 03:53', c'est le 1er qui
> est plus grand, d'une seule minute.
>
> 1 mois et 30 jours et 2 mois, c'est en effet identique, avec les unités
> considérées.

On peut alors considérer que 1 mois et 30 jours 03:54 aurait du être
afficher 2 mois 03:54 pour être plus cohérent.

> Avec age(), il n'y a plus de comparaison possible qui conserverait
> l'ordre original...
>
> Au final, si tu veux que ton ORDER BY soit correct, il ne faut pas
> utiliser age() mais la différence avec CURRENT_TIMESTAMP, comme le
> montre cet exemple:

J'utilises age( now(), timestamp ) pour corriger la curiosité, ce qui
revient au même. Dommage que la version à un argument de age() ne fasse
pas de même. J'imagine qu'il n'est pas possible de changer cela pour
raison de retro-compatibilité, donc il faut le savoir.

> http://pgsql.privatepaste.com/0faaP3uV6c
>
> (timestamp-timestamp) conserve en effet tous les détails.
>
> J'espère avoir été clair...

Limpide.

> Merci en tout cas pour avoir soulevé ce point :)

Merci pour la recherche d'info. Cette curiosité est à connaître.

Stéphane.

In response to

Browse pgsql-fr-generale by date

  From Date Subject
Next Message William Dode 2008-07-15 10:19:31 Re: table temporaire ou raz
Previous Message Jean-Paul Argudo 2008-07-15 08:45:14 Re: Question de dates