Skip site navigation (1) Skip section navigation (2)

Question de dates

From: Stéphane Bunel <stephane+pgfr(at)bpf(dot)st>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Question de dates
Date: 2008-07-14 21:54:44
Message-ID: 487BCB24.50201@bpf.st (view raw or flat)
Thread:
Lists: pgsql-fr-generale
La gestion des dates est une source de cas d'école. En regardant le 
résultat d'une requête j'ai été quelque peu surpris par le résultat d'un 
tri sur intervalle de temps. (PG 8.3.3)

La table et les données suivantes permettent de recréer le cas.

CREATE TABLE test
(
   id serial PRIMARY KEY,
   utc timestamp without time zone
) ;

INSERT INTO test ( utc ) VALUES
  ( '2008-05-16 08:06:04' ),
  ( '2008-05-14 20:05:26' ),
  ( '2008-05-13 20:06:16' );

Soit:

=# SELECT * FROM test ;
  id |         utc
----+---------------------
   1 | 2008-05-16 08:06:04
   2 | 2008-05-14 20:05:26
   3 | 2008-05-13 20:06:16
(3 rows)


Un tri sur la colonne _utc_ donne fort logiquement le résultat suivant:

=# SELECT id, utc, age( utc ) AS a FROM test ORDER BY utc ;
  id |         utc         |           a
----+---------------------+------------------------
   3 | 2008-05-13 20:06:16 | 2 mons 03:53:44
   2 | 2008-05-14 20:05:26 | 1 mon 30 days 03:54:34
   1 | 2008-05-16 08:06:04 | 1 mon 28 days 15:53:56
(3 rows)


Le même tri mais sur la colonne _a_ (différence entre la date actuelle 
et l'argument donné dont le résultat est un type interval) devrait 
donner le résultat strictement inverse (Id: 1, 2, 3), mais:

=# SELECT id, utc, age( utc ) AS a FROM test ORDER BY a ;
  id |         utc         |           a
----+---------------------+------------------------
   1 | 2008-05-16 08:06:04 | 1 mon 28 days 15:53:56
   3 | 2008-05-13 20:06:16 | 2 mons 03:53:44
   2 | 2008-05-14 20:05:26 | 1 mon 30 days 03:54:34
(3 rows)
remarque: age( timestamp ), est équivalent à: age( now()::date, timestamp ).

le résultat est plutôt insolite en ceci qu'il montre un intervalle de 
temps de 2 mois (id 3) situé entre deux intervalles de temps plus petit.

Question:
Quelle est l'interprétation (logique?) à cet ordre en désordre ?


Responses

pgsql-fr-generale by date

Next:From: Jean-Paul ArgudoDate: 2008-07-15 06:53:27
Subject: Re: Question de dates
Previous:From: Guillaume LelargeDate: 2008-07-14 09:28:08
Subject: Re: table temporaire ou raz

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group