Coup de main sur fonction statisticsBetween

Bonsoir,
Je sèche sur une fonction de scénario, aussi je serais preneur d’un petit coup de main.
Voilà, je stocke dans une info de virtuel la quantité de pluie journalière de la veille, cette info s’appelle de façon originale veille et les données stockées dans l’historique ont l’air toutes correctes. Je les ai parcourues une à une depuis le mois d’octobre.

Lorsque je fais :
statisticsBetween(#[Environnement][Cumul Pluie][Veille]#,sum,first of january midnight,now)
J’ai bien le résultat du calcul depuis le début de l’année.

En revanche, lorsque je fais :
statisticsBetween(#[Environnement][Cumul Pluie][Veille]#,sum,first of this month midnight,now)

J’ai toujours le résultat du calcul depuis le début de l’année.

Si vous la voyiez, pourriez-vous me dire quelle est mon erreur ?

Par avance, merci.

Bonsoir,

ca ne serai pas plutot first day of this month midnight ?

1 « J'aime »

Gagné, bien vu.

Pour la semaine, je mets :
statisticsBetween(#[Environnement][Cumul Pluie][Veille]#,sum,this week midnight,now)

Pour le trimestre, je repère le mois et en fonction je mets (pour le dernier trimestre) :
statisticsBetween(#[Environnement][Cumul Pluie][Veille]#,sum,first of october midnight,now)

Le semestre, après repérage du mois (dernier semestre) :
statisticsBetween(#[Environnement][Cumul Pluie][Veille]#,sum,first of july midnight,now)

Et enfin, pour l’année :
statisticsBetween(#[Environnement][Cumul Pluie][Veille]#,sum,first of january midnight,now)

Tu ne vois pas d’autres erreurs par hasard ?

Salut, tu dis que tu stockes ton info dans un virtuel, est ce que tu le rafraichis bien ?

Pour savoir si le souci vient du virtuel ou de ta formule est ce que le résultat est le même lorsque tu passe via le testeur d’expressions ?

Yep, testé également avec le testeur d’expression

les même :rofl:
first of october midnightfirst day of october midnight
first of july midnightfirst day of july midnight
first of january midnightfirst day of january midnight

Moyen simple de tester, c’est de mettre dans le testeur d’expression comme ceci :

date('d M Y H:i:s', strtotime('first of january midnight')); → renverra pas de date
date('d M Y H:i:s', strtotime('first day of january midnight')); → renverra 01 Jan 2023 00:00:00

1 « J'aime »

J’étais déjà en train de les modifier comme ça au moment où tu m’as répondu.
Effectivement, c’est comme ça qu’il faut l’écrire.
Merci de ton aide et bonne fin de soirée.

Bonjour
Pour info / simplifier :
(De tête / pas test sur le champ)
-7 / -30 / -90 day fonctionne (pour semaine / mois / trimestre) (il faut bien mettre le « moins »)
Je pourrais vérifier ce soir si tu veux.

Bonjour,
Je n’ai pas compris ton propos, peux-tu le préciser ?

Un exemple plutot qu’un long discourt :slight_smile:

@@ Somme sur :
1 jour : statistics(#[Salle à manger][Cpt-TH-LCD][T°]#,sum,-1 day)
1 semaine : statistics(#[Salle à manger][Cpt-TH-LCD][T°]#,sum,-7 day)
1 mois : statistics(#[Salle à manger][Cpt-TH-LCD][T°]#,sum,-31 day)
-----
1 jour : statisticsBetween(#[Salle à manger][Cpt-TH-LCD][T°]#,sum,-1 day,now)
1 semaine : statisticsBetween(#[Salle à manger][Cpt-TH-LCD][T°]#,sum,-7 day,now)
1 mois : statisticsBetween(#[Salle à manger][Cpt-TH-LCD][T°]#,sum,-31 day,now)

Cela donne :

[2023-11-21 22:30:57][SCENARIO] Start : Scenario lance manuellement.
[2023-11-21 22:30:57][SCENARIO] Exécution du sous-élément de type [action] : action
[2023-11-21 22:30:57][SCENARIO] Log : @@ Somme sur :
1 jour : 83.00
1 semaine : 2096.00
1 mois : 9672.60
-----
1 jour : 83.00
1 semaine : 2096.00
1 mois : 9672.60
[2023-11-21 22:30:57][SCENARIO] Fin correcte du scénario

J’utilise jamais sum, mais ça à l’air cohérent !
Tu me diras si ça fonctionne ?!

Bonne soirée

Bonjour,
Je te remercie mais ça ne correspond pas vraiment à mon besoin qui n’est pas de faire des stats sur un nombre de jours glissants mais depuis un jour précis (dernier lundi, 1er du mois, du trimestre, du semestre et de l’année).
Néanmoins, je garde.
Bonne journée

Bonjour,
Désolé de déterrer un vieux sujet, mais il a fallu attendre le changement d’année et ensuite le changement de mois (février) pour trouver les erreurs dans mes stats.
En effet, en utilisant les conseils, j’ai fait en hypothèse pour la somme de l’année passé. Néanmoins en changeant de mois, mes stats changent, alors qu’elles ne devraient plus.
Alors j’ai creusé.
Si j’utilise :

date('d M Y H:i:s', strtotime('first day of this year midnight'))

Ca me retourne aujourd’hui : Résultat : 01 Feb 2025 00:00:00
bizarre pour le premier jour de cette année :thinking:

date('d M Y H:i:s', strtotime('first day of last year midnight'))

Ca me retourne aujourd’hui : Résultat : 01 Feb 2024 00:00:00
bizarre pour le premier jour de l’année dernière :thinking:

date('d M Y H:i:s', strtotime('first day of january midnight'))

Ca me retourne aujourd’hui : Résultat : 01 Jan 2025 00:00:00
Là c’est bon, mais pour 2024 ?

Par définition, comment je pourrais avoir la somme de stats du 01/01 au 31/12 de l’année passée ?
Et par définition les stats de l’année en cours … 01/01/25 au 31/12/2025
car ‹ first day of this year midnight › change en fonction du mois …
car

 date('d M Y H:i:s', strtotime('last day of this year midnight'))

Ca me retourne aujourd’hui : Résultat : 28 Fev 2025 00:00:00

statisticsBetween(#[Maison][Tableau des consos][Conso HP]#,sum,first day of last year midnight, first day of this year midnight)

=> me donne du 01/02/2024 au 01/02/2025 :cold_sweat:

Hello,

Part du principe que toute les données que tu ne défini pas dans le strtotime seront initié par défaut avec la date actuelle. donc pour

Vu que tu défini pas le mois, c’est bien le mois en cours qui est retourné (Fevrier). Il faudrait ajouter le mois :

date('d M Y H:i:s', strtotime('first day of january this year midnight'))

Résultat : 01 Jan 2025 00:00:00

date('d M Y H:i:s', strtotime('first day of january last year midnight'))01 Jan 2024 00:00:00
date('d M Y H:i:s', strtotime('last day of december last year 23:59:59'))31 Dec 2024 23:59:59

date('d M Y H:i:s', strtotime('first day of january this year midnight'))01 Jan 2025 00:00:00
date('d M Y H:i:s', strtotime('last day of december this year 23:59:59'))31 Dec 2025 23:59:59

2 « J'aime »

Bonjour,

Merci cette réponse, qui est bien explicative.
Elle n’est pas dans la traduction si évidente car « le premier jour de l’année précédente » pour moi ça n’induit que le 01 janvier. :wink:
Mais maintenant avec ton explication, je comprends pourquoi j’avais une erreur.
Néanmoins, je n’avais pas de crainte sur ton intervention, car j’avais beau retourner toutes les solutions, je ne trouvais pas. Même Google ou l’IA ne m’orientait pas mieux.

Je suis convaincu que ça servira ultérieurement pour un autre noob.
Donc je confirme que cela fonctionne très bien.

Encore MERCI à toi.

Hello,

Raaaaaaa c’est donc pour ça ???!!!
J’ai buté sur à peu près le même problème pendant des jours et des jours et j’ai fini par abandonner, car moi non plus je n’ai rien trouvé comme explications sur le net.
Là tu viens de me rouvrir beaucoup de possibilités de stats que je n’arrivais pas à faire, un énorme merci (une fois de plus LOL) !!! :smiley:

3 « J'aime »