Vous n'êtes pas identifié(e).
Pages : 1
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
Avez-vous essayé d'écrire la requête ? si oui, à quoi êtes-vous arrivé ?
Guillaume.
Hors ligne
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
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
Merci d'avoir répondu aussi rapidement.
La version que j'utilise est 9.1.3
Bien à vous.
Hors ligne
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
Pages : 1