Bonjour,
J’ai des virtuels qui historisent la conso jour, conso semaine et conso mois (statisticBetween avec sum). Donc a chaque nouvelle valeur de l’intervalle court, les virtuels additionne pour donner la conso totale jour, semaine, mois.
Donc je me retrouve avec énormément de valeurs, inutiles. 48 par jour, 48x7 pour la semaine, 48x31 pour le mois.
Donc l’idée est :
Pour le jour; j’aimerais supprimer l’historique depuis 00:00 à now. Au passage de minuit pour J+1, je devrais avoir garder la valeur de la veille.
Pour la semaine; supprimer l’historique depuis first day of this week à now. Au passage de minuit dimanche, je devrais avoir sauvegarder la dernière valeur.
Pour le mois; First day of this month, now. Au passage au 1er du mois, la dernière valeur devrais être sauvée.
Voici ce que j’ai essayé :
// Récupération de l'ID de la commande historisée
$_cmd_id = 2237;
// Récupération du timestamp de début de la journée en cours (à partir de minuit)
$_startTime = strtotime('today midnight');
// Récupération du timestamp de fin (jusqu'à maintenant)
$_endTime = time();
history::removeHistory($_cmd_id, $_startTime, $_endTime);
Sans résultat
J’ai aussi essayé des $cmd->cleanHistoryBetween
Rien.
J’ai aussi essayé une requête DB
DELETE FROM `historyArch` WHERE `cmd_id` = 2237 AND `datetime` BETWEEN '2023-11-03 00:00:00' AND '2023-11-03 23:00:00'
(J’ai essayé en absolue même si je souhaite le faire en relatif).
Ceci aussi :
// Récupération de l'ID de la commande historisée
$cmdId = 2237;
// Récupération du timestamp de début de la journée en cours (à partir de minuit)
$startOfDayTimestamp = strtotime('today midnight');
// Récupération du timestamp de fin (jusqu'à maintenant)
$endTimestamp = time();
// Suppression des valeurs de l'historique entre les timestamps spécifiés
$sql = "DELETE FROM `history` WHERE `cmd_id` = $cmdId AND `datetime` >= $startOfDayTimestamp AND `datetime` <= $endTimestamp";
$db = DB::Prepare($sql, array(), DB::FETCH_TYPE_ROW);
$db->execute();
J’ai pu lire ici que c’était pas bien :
Mais ça n’a de toute façon pas marché.
Et d’autres choses également, sans succès sinon je ne serais pas là à vous demander
Merci d’avance pour vos réponses
Edit :
Dans mon scenario, l’objectif est de supprimer l’histo sur la période concernée puis de réeffectuer un calcul pour la période concernée (pour ne pas se retrouver avec toute ces valeurs inutile qui prennent de la place.
Au changement de période, la dernière valeur pour la période précédente devrait être épargnée en repartant sur le nouveau cycle.