J'ai une table contenant des rapports et la date et l'heure de leur création. Je voudrais créer un graphique pour comptabiliser le nombre de rapports créés pendant des intervalles de dix minutes entre deux périodes: 8h00-9h00 et 13h00-14h00.Sélection de plages de temps à partir des champs de date et heure dans Access
Voici un exemple d'une requête que je voudrais courir:
SELECT
s.StudyStartDateTime AS "8:00 - 8:10",
s.StudyStartDateTime AS "8:10 - 8:20",
s.StudyStartDateTime AS "8:20 - 8:30",
s.StudyStartDateTime AS "8:30 - 8:40",
s.StudyStartDateTime AS "8:40 - 8:50",
s.StudyStartDateTime AS "8:50 - 9:00",
s.StudyStartDateTime AS "1:00 - 1:10",
s.StudyStartDateTime AS "1:10 - 1:20",
s.StudyStartDateTime AS "1:20 - 1:30",
s.StudyStartDateTime AS "1:30 - 1:40",
s.StudyStartDateTime AS "1:40 - 1:50",
s.StudyStartDateTime AS "1:50 - 2:00"
FROM
dbo_Study_ViewX211_Rpt AS s
WHERE FORMAT("8:00 - 8:10", 'hh:mm:ss') BETWEEN "08:00:00" AND "08:09:59"
AND FORMAT("8:10 - 8:20", 'hh:mm:ss') BETWEEN "08:10:00" AND "08:19:59"
AND FORMAT("8:20 - 8:30", 'hh:mm:ss') BETWEEN "08:20:00" AND "08:29:59"
AND FORMAT("8:30 - 8:40", 'hh:mm:ss') BETWEEN "08:30:00" AND "08:39:59"
AND FORMAT("8:40 - 8:50", 'hh:mm:ss') BETWEEN "08:40:00" AND "08:49:59"
AND FORMAT("8:50 - 9:00", 'hh:mm:ss') BETWEEN "08:50:00" AND "08:59:59"
AND FORMAT("1:00 - 1:10", 'hh:mm:ss') BETWEEN "01:00:00" AND "01:09:59"
AND FORMAT("1:10 - 1:20", 'hh:mm:ss') BETWEEN "01:10:00" AND "01:19:59"
AND FORMAT("1:20 - 1:30", 'hh:mm:ss') BETWEEN "01:20:00" AND "01:29:59"
AND FORMAT("1:30 - 1:40", 'hh:mm:ss') BETWEEN "01:30:00" AND "01:39:59"
AND FORMAT("1:40 - 1:50", 'hh:mm:ss') BETWEEN "01:40:00" AND "01:49:59"
AND FORMAT("1:50 - 2:00", 'hh:mm:ss') BETWEEN "01:50:00" AND "01:59:59"
Malheureusement, il semble que l'accès ne peut pas dire que le domaine que je voudrais formater dans la fonction FORMAT fait référence au champ du même nom dans la requête. Dans le cas ci-dessus, je suppose que c'est parce qu'Access traite cela comme un littéral de chaîne. Toutefois, cela ne fonctionne pas, soit:
SELECT
s.StudyStartDateTime AS first
FROM
dbo_Study_ViewX211_Rpt AS s
WHERE FORMAT(first, 'hh:mm:ss') BETWEEN "08:00:00" AND "08:09:59"
L'accès me demande la valeur de 'first'. Je me sens comme je vais à ce sujet la mauvaise façon de commencer. Est-ce que quelqu'un peut-il me montrer la bonne direction?
Plus d'infos: J'utilise le moteur Jet via ODBC, mais les données sont stockées dans SQL Server 2005, donc si nécessaire, je suppose que je pourrais écrire une requête directe. Idéalement, cependant, j'aimerais que cela fonctionne dans Access.
EDIT:
Pour être clair, ce qui suit fonctionne le:
SELECT s.StudyStartDateTime AS first
FROM dbo_Study_ViewX211_Rpt AS s
WHERE FORMAT(StudyStartDateTime,'hh:mm:ss') Between "08:00:00" And "08:09:59";
Ceci, cependant, ne me permet pas de sélectionner le même champ à plusieurs reprises dans plusieurs conditions.
Le premier exemple à http://office.microsoft.com/en-us/access/HA012288391033.aspx#examples suggère que enveloppant l'alias du champ dans des crochets est la bonne façon de faire référence à une source d'enregistrement, mais ce qui suit donne encore une invite pour la valeur de « première »:
SELECT s.StudyStartDateTime AS first
FROM dbo_Study_ViewX211_Rpt AS s
WHERE FORMAT([first],'hh:mm:ss') Between "08:00:00" And "08:09:59";
Edit II:
un exemple du contenu de StudyStartDateTime de quelques enregistrements:
29/11/2007 8:06:00 AM
30/11/2007 8:09:01 AM
05/12/2007 8:06:51 AM
06/12/2007 8:07:21 AM
Accès voit fi champ comme un type de données "Date/Heure".
Mon objectif final est de représenter graphiquement le pointage pour chaque intervalle. Je pense que la façon la plus simple de le faire serait de simplement sélectionner chaque date/heure comme un alias différent. Par exemple:
8:00-8:10 8:10-8:20 8:20:8:30 ...
=======================================
8:01
8:03
8:15
8:23
8:28
8:28
...
Avez-vous regardé dans PARTITION()? –