PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 22/01/2013 23:18:27

ninjajaune
Membre

Requetes avec dates à cheval

Bonjour à tous,

J'ai une table "Client" structurée comme suite:

- ID
- Nom
- Prenom
- ......
- Date_Creation

Une journée commence de 10h  et se termine à 06h le lendemain matin. Donc une journée est à cheval sur 2 dates (2013-01-22 10:00:00 à 2013-01-23 06:00:00)

Je souhaiterais faire une requête qui me permettrait d'afficher :
- Par date_creation (en tenant compte qu'une date est à cheval sur deux jours)
- le nombre de clients

Exemple:
requete_nouveau_client(DateDeb, DateFin)

- 2013-01-10   20  ==>(2013-01-10 10:00 à 2013-01-11 06:00:00)
- 2013-01-11   25  ==>(2013-01-11 10:00 à 2013-01-12 06:00:00)
- 2013-01-12   30  ==>(2013-01-12 10:00 à 2013-01-13 06:00:00)

D'avance merci pour votre aide.

Hors ligne

#2 22/01/2013 23:58:09

gleu
Administrateur

Re : Requetes avec dates à cheval

Avez-vous essayé d'écrire la requête ? si oui, à quoi êtes-vous arrivé ?


Guillaume.

Hors ligne

#3 23/01/2013 10:39:00

ninjajaune
Membre

Re : Requetes avec dates à cheval

Bonjour,

Voici ma requete:

select
    date_trunc('day',date_creation),
    count (id_membre)

FROM
    membre
WHERE
    date_creation between '2012-01-10 10:00:00' AND '2012-01-15 06:00:00'
GROUP BY
    date_trunc('day',date_creation)
ORDER BY
    date_trunc('day',date_creation)



Résultats:

"2012-01-10 00:00:00";17
"2012-01-11 00:00:00";30
"2012-01-12 00:00:00";22
"2012-01-13 00:00:00";85
"2012-01-14 00:00:00";130
"2012-01-15 00:00:00";10

Les résultats sont faussés car la requête ne tient pas compte les 6 heures du lendemain mais en plus elle compte les 6h du jour alors qu'elle ne devrait pas.


Merci pour votre aide.

Bien à vous.

Hors ligne

#4 23/01/2013 11:04:47

gleu
Administrateur

Re : Requetes avec dates à cheval

Le problème est que vous essayez de grouper non pas par rapport à une date mais plutôt par rapport à un intervalle de date. Je ne vois pas trop comment faire ça avant la 9.2. Quelle version de PostgreSQL utilisez-vous ?


Guillaume.

Hors ligne

#5 23/01/2013 12:43:13

ninjajaune
Membre

Re : Requetes avec dates à cheval

Merci d'avoir répondu aussi rapidement.

La version que j'utilise est 9.1.3

Bien à vous.

Hors ligne

#6 23/02/2013 15:00:21

gleu
Administrateur

Re : Requetes avec dates à cheval

Désolé pour la réponse lente. En fait, c'était assez simple :

SELECT
    date_trunc('day',date_creation-'6 hours'::interval),
    count (id_membre)
FROM
    membre
WHERE
    date_creation between '2012-01-10 10:00:00' AND '2012-01-15 06:00:00'
GROUP BY
    date_trunc('day',date_creation-'6 hours'::interval)
ORDER BY
    date_trunc('day',date_creation-'6 hours'::interval)

Guillaume.

Hors ligne

Pied de page des forums