MYSQL: vrai timestamp? - SQL/NoSQL - Programmation
Marsh Posté le 13-06-2022 à 16:58:51
Lu,
il existe la fonction UNIX_TIMESTAMP.
Quel besoin ? Tu travailles directement en SQL ou via un langage quelconque ?
Marsh Posté le 13-06-2022 à 17:12:28
pluj a écrit : Lu, |
Excellent, merci. C'est pile poil ce qu'il me fallait.
pluj a écrit : Quel besoin ? Tu travailles directement en SQL ou via un langage quelconque ? |
Mon compteur Linky à une led qui clignote à une fréquence qui dépend de la puissance active instantanée.
J'ai fixé un phototransistor juste devant. Il est connecté à un petit circuit qui adapte son signal pour un ESP-01S qui, lui, mesure l'intervalle entre les impulsions, en déduit la puissance active qu'il balance dans une table MYSQL constituée de seulement deux champs: la date/heure courante et la puissance active, sur un PC.
Ce PC héberge un serveur web contenant entre autres une page PHP qui représente la puissance consommée sous la forme d'un graphique.
Actuellement, l'ESP-01S transmet ses infos au PC via une requête HTTP. C'est la page PHP pointée qui se charge d'insérer la date/heure actuelle associée à la puissance transmise.
Ca fonctionne très bien mais j'aimerais shunter la requête HTTP, en faisant en sorte que l'ESP-01S insère directement ses mesures une requête SQL.
Comme il ne gère pas l'heure, qu'il ne connaît que le temps écoulé depuis sa mise en route ou sa dernière réinitialisation, je n'ai d'autre choix que de confier au serveur MySQL la génération du timestamp.
La description de ce bricolage: https://forum.hardware.fr/hfr/elect [...] tm#t369805
Marsh Posté le 16-06-2022 à 08:20:23
Ben du coup, si c'est Mysql qui doit générer le timestamp, tu peux très bien prendre celui renvoyé par la fonction CURRENT_TIMESTAMP() que tu mets dans un champ de type datetime, non ?
Marsh Posté le 16-06-2022 à 08:30:28
rufo a écrit : Ben du coup, si c'est Mysql qui doit générer le timestamp, tu peux très bien prendre celui renvoyé par la fonction CURRENT_TIMESTAMP() que tu mets dans un champ de type datetime, non ? |
Un champ de type datetime, je ne sais pas trop ce qu'il va me renvoyer à la lecture.
J'ai toujours stocké des timestamps Unix en base de donnée et je suis trop vieux pour changer d'habitude
Quoi qu'il en soit, j'ai dû renoncer à la gestion de la requête d'insertion par le ESP-01S.
La tentative de connexion au SGBD donnait systématiquement une exception que même EspExceptionDecoder-2.0.2 ne parvenait à décoder.
J'en ai déduit que son firmware ne permettait pas de gérer les connexions MySQL.
Ne voulant pas laisser ce montage hors ligne trop longtemps, je suis revenu à la bidouille crade de la requête HTTP qui a tout de même l'avantage de fonctionner parfaitement.
Par contre, je compte bien sur mon Arduino Mega 2560 Rev 3 pour gérer directement la MySQL. J'ai assez de l'ESP-01S pour harceler mon serveur web
Marsh Posté le 13-08-2022 à 16:21:53
Je reviens à la charge suite à une prise de tête avec MySQL qui semble n'accepter aucune requête composée
Le contexte: une table contenant mes données météo, à raison d'un enregistrement par minute.
Elle compte entre autres ces trois champs:
dh: un timestamp unix faisant office de clé primaire (dh: Date Heure)
windspeedm: la vitesse moyenne du vent sur la minute écoulée, qui provient de l'Arduino/station météo
windspeed: la vitesse moyenne du vent sur 5 minutes glissantes, que l'Arduino n'a pas la capacité de calculer.
Je dois donc calculer et mettre à jour après coup le champ windspeed.
Pour ce faire, un trigger semble l'idéal mais avant d'en arriver là, j'ai voulu tester la requête en question, pour découvrir qu'elle ne passe pas et je peine à comprendre pourquoi. Les requêtes composées seraient-elles proscrites par MySQL?
Voici ma requête pourtant simple, avec le message d'erreur qui m'a l'air à côté de la plaque :
Elle a probablement un bug tellement évident que je ne le vois pas
Un regard neuf serait donc le bienvenu
Marsh Posté le 19-08-2022 à 15:56:46
Pas expert en MySQL, mais d'après ce que je trouve :
- https://fr.wikibooks.org/wiki/MySQL/Alias
- https://www.mysqltutorial.org/mysql-alias/
L'alias déclaré ne peut être utilisé que dans une clause ORDER BY, GROUP BY et HAVING et non dans une clause WHERE.
Marsh Posté le 19-08-2022 à 16:00:50
MaybeEijOrNot a écrit : Pas expert en MySQL, mais d'après ce que je trouve : |
Je devrais donc m'en sortir avec HAVING.
Je ne puis m'y recoller tout de suite cependant. Je suis en pleine tentative désespérée de débricker mon téléphone
Marsh Posté le 13-06-2022 à 16:33:47
J'ai besoin d'insérer dans une base MySQL via une requête le timestamp actuel, mais sous la forme d'un vrai timestamp à savoir le nombre de secondes écoulées depuis le 1er janvier 1970.
Mon problème est que pour MySQL, un timestamp renvoyé notamment par CURRENT_TIMESTAMP() est la version littérale de la date et l'heure, par exemple 20220613161021 qui se lit 2022_06_13 16:10:21
Alors que j'ai besoin à la place de 16551294211
Est-ce possible relativement simplement, en l'occurrence plus simplement que modifier mes codes pour les adapter au format littéral de la date et l'heure et convertir toutes les valeurs déjà stockées dans ce format à la c..?