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
Views: Raw Message | Whole Thread | Download mbox | Resend email
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

Browse pgsql-fr-generale by date

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