Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/10/2011, 16h31   #1
Invité régulier
 
Homme
Etudiant en alternance
Inscription : octobre 2011
Messages : 10
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 10
Points : 6
Points : 6
Par défaut Regroupement sur les heures

Bonjour, je travail sur une base de données qui enregistre une donnée numérique toutes les 5 minutes je souhaite récupérer cette donnée tous les jours (sur un mois) à 14h00 et 16h00.
J'ai donc une table avec un int et un datetime.

Je n'arrive pas travailler sur la partie hh:mm:ss du datetime, pas de problème pour trouver une valeur à un date précise(jj/mm/aa hh:mm:ss) mais pour récupérer toutes les valeurs à ces heures-là(14h00 et 16h00) ...
blivatz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 16h38   #2
SLE
Membre chevronné
 
Avatar de SLE
 
Homme Serge LESPAGNARD
Consultant informatique
Inscription : janvier 2004
Messages : 588
Détails du profil
Informations personnelles :
Nom : Homme Serge LESPAGNARD
Âge : 38
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : janvier 2004
Messages : 588
Points : 732
Points : 732
En utilisant la fonction DatePart() pour récupérer l'heure = x, la minute = 0, ...

Code :
datepart(hh,MonChampDate) = 14 AND datepart(...)
SLE est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/10/2011, 16h39   #3
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
Le plus simple est d'implémenter une table de chronodatation au poas voulu.

Si vous avez déjà une table de chronodatation au pas de 5 minutes, par exemple comme ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
NID      DATE       HEURE
------- ---------- --------
...
294     1/1/1900   00:00
295     1/1/1900   00:05  
296     1/1/1900   00:10
297     1/1/1900   00:15
...
135454  11/10/2011 17:20
135455  11/10/2011 17:25
135456  11/10/2011 17:30
...
Il vous suffit de faire une jointure avec un filtre comme ceci :

NID modulo 12 = ?

pour récupérer une ligne par heure, ou bien:

(NID + ?) / 12

Pour faire une agrégat sur toutes les lignes d'une même heure.

Ou ? est 0, 1, 2, 3 ... 11 en fonction du calage entre la dateheure et le ID
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/10/2011, 16h49   #4
SLE
Membre chevronné
 
Avatar de SLE
 
Homme Serge LESPAGNARD
Consultant informatique
Inscription : janvier 2004
Messages : 588
Détails du profil
Informations personnelles :
Nom : Homme Serge LESPAGNARD
Âge : 38
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : janvier 2004
Messages : 588
Points : 732
Points : 732
Ou éventuellement avec la fonction convert et le style 114 ?
Par exemple :

Code :
SELECT convert(varchar(5),getdate(),114)
va renvoyer l'heure en cours sous forme de chaine 'HH:mm'
SLE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 16h54   #5
Invité régulier
 
Homme
Etudiant en alternance
Inscription : octobre 2011
Messages : 10
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 10
Points : 6
Points : 6
Merci pour vos réponses j'ai pu réaliser ma requête
blivatz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h28.


 
 
 
 
Partenaires

Hébergement Web