A voir également:
- Récupération de valeur SQL par saut de 30 secondes
- Convertisseur récupération de texte - Guide
- Impossible de récupérer mon compte gmail - Guide
- Récupération serveur sql - Télécharger - Gestion de données
- Comment supprimer une page sur word avec un saut de page ? - Guide
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
6 réponses
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
9 mai 2016 à 10:48
9 mai 2016 à 10:48
Salut,
Un début de solution :
Bonne journée
Un début de solution :
SELECT * FROM table WHERE RIGHT(timestamp, 2) = '00' OR RIGHT(timestamp, 2) = '30'
Bonne journée
Merci Cela fonctionne mais il y a un petite inconvénient c'est que si mon timestamp ne fini pas par 00 ou 30, parfois je n'ai pas de valeur pendant 1 heures .
"SELECT timestamp, papp FROM tele where timestamp >= '$start' and timestamp <= '$stop' and RIGHT(timestamp, 2) = '00' OR RIGHT(timestamp, 2) = '30' ORDER BY 1 ";
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
9 mai 2016 à 12:12
9 mai 2016 à 12:12
Quelque chose comme ceci peut être ?
SELECT * FROM table WHERE timestamp >= '$start' AND timestamp <= '$stop' GROUP BY LEFT(timestamp, LENGTH(timestamp) - 2)
Parfait cela me fait des saut de 100
Peux tu expliquer le code ?
1462723001 BASE : 1462723100 BASE : 1462723200 BASE : 1462723300 BASE
Peux tu expliquer le code ?
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
9 mai 2016 à 14:56
9 mai 2016 à 14:56
L'idée est de grouper les résultats selon le timestamp en omettant les deux derniers chiffres du timestamp (les seconde), on récupère ainsi uniquement le premier résultat pour chaque minute.
Tu peux essayer ces requêtes pour t'aider à mieux comprendre :
Néanmoins, n'étant pas un expert sql, cette requête ne me semble pas complètement satisfaisante : on récupére un résultat toutes les minutes et non toutes les 30s et on ne sait pas quel est le résultat récupéré pour chaque groupe (le premier en bdd, le plus récent, ... ? peut être plus précis en ajoutant un order by ?).
Tu peux essayer ces requêtes pour t'aider à mieux comprendre :
SELECT timestamp, LEFT(timestamp, LENGTH(timestamp) - 2) FROM table SELECT timestamp, LEFT(timestamp, LENGTH(timestamp) - 2) FROM table GROUP BY LEFT(timestamp, LENGTH(timestamp) - 2)
Néanmoins, n'étant pas un expert sql, cette requête ne me semble pas complètement satisfaisante : on récupére un résultat toutes les minutes et non toutes les 30s et on ne sait pas quel est le résultat récupéré pour chaque groupe (le premier en bdd, le plus récent, ... ? peut être plus précis en ajoutant un order by ?).
Je ne pense pas que cela interférent car derrière je génère un graphique avec une boucle sur 24 heures avec
Les sauts sont de 1 minutes mais cela fonctionne .
Je n'ai pas encore assez de valeur pour essayer sur 1 semaine ou un mois.
En parallèle j'ai fais un script qui se lance toute les 30 sec qui prend la dernière valeur ajoutée pour la remettre dans une autre table je vais comparer les deux et voir .
Merci
where timestamp >= '$start' and timestamp <= '$stop'
Les sauts sont de 1 minutes mais cela fonctionne .
Je n'ai pas encore assez de valeur pour essayer sur 1 semaine ou un mois.
En parallèle j'ai fais un script qui se lance toute les 30 sec qui prend la dernière valeur ajoutée pour la remettre dans une autre table je vais comparer les deux et voir .
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jordane45
Messages postés
38275
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
8 novembre 2024
4 696
9 mai 2016 à 16:59
9 mai 2016 à 16:59
Bonjour,
Tu pourrais aussi utiliser du LIKE.
Un truc du genre :
Pour le coup.. je pense que cette solution sera la plus fiable. Perso... je pense que c'est ce que j'aurais fait.
EDIT : Il existe aussi la possibilité d'utiliser ce genre de syntaxe :
Tu pourrais aussi utiliser du LIKE.
Un truc du genre :
SELECT taColonneTimeStamp FROM tatable WHERE taColonneTimeStamp like '%:%:3%' OR taColonneTimeStamp like '%:%:0%' GROUP BY DATE_FORMAT(taColonneTimeStamp, '%Y-%M-%d %H:%i:%s')
En parallèle j'ai fais un script qui se lance toute les 30 sec qui prend la dernière valeur ajoutée pour la remettre dans une autre table
Pour le coup.. je pense que cette solution sera la plus fiable. Perso... je pense que c'est ce que j'aurais fait.
EDIT : Il existe aussi la possibilité d'utiliser ce genre de syntaxe :
SELECT ROUND(UNIX_TIMESTAMP(taColonneTimeStamp)/(30 * 3600)) AS timekey FROM tatable GROUP BY timekey;