OVH Cloud OVH Cloud

Perl + Date sur table SQL ?

2 réponses
Avatar
Mag
Rebonjour,

Bien nouvelle question:

Actuellement mon script perl rentre des données dans une table
simplement en rajoutant une ligne qui commence par la date ...
(j'ai donc un champs date)

Je dois changer cela et faire en sorte que ma base aille deux champs
date (Date_Start Date_End) et que mon script perl rajoute les données
dedans

Exemple:

Date Compteur_1 Compteur_2
2006-07-22 08:17:00 12 22
2006-07-22 08:21:00 8 4
2006-07-22 08:31:00 77 10

Apres modif:

Date_Start Date_End Compteur_1 Compteur_2
2006-07-22 08:00:00 2006-07-22 08:59:59 97 36

bref qu'il incremente plutot qu'il cree une ligne + quand
l'heure change, il cree une nouvelle entre puis l'update ..

Comment je peux sortir cela en perl ?


Merci d'avance

2 réponses

Avatar
Sébastien Cottalorda
Rebonjour,

Bien nouvelle question:

Actuellement mon script perl rentre des données dans une table
simplement en rajoutant une ligne qui commence par la date ...
(j'ai donc un champs date)

Je dois changer cela et faire en sorte que ma base aille deux champs
date (Date_Start Date_End) et que mon script perl rajoute les données
dedans

Exemple:

Date Compteur_1 Compteur_2
2006-07-22 08:17:00 12 22
2006-07-22 08:21:00 8 4
2006-07-22 08:31:00 77 10

Apres modif:

Date_Start Date_End Compteur_1 Compteur_2
2006-07-22 08:00:00 2006-07-22 08:59:59 97 36

bref qu'il incremente plutot qu'il cree une ligne + quand
l'heure change, il cree une nouvelle entre puis l'update ..

Comment je peux sortir cela en perl ?


Merci d'avance
Salut,


Tu peux t'en sortir ainsi:
Enregistre tes lignes dans un hachage indexé sur la date + la première heure


exemple:

#!/usr/bin/perl -w
use strict;
my %totaux=();
my $idx='';
my @elements=();
while (my $ligne=<DATA>){
chomp($ligne);
@elements=split /s+/, $ligne;
$idx = $elements[0] .' '. substr($elements[1],0,2);
$totaux{$idx}{Compteur_1} += $elements[2];
$totaux{$idx}{Compteur_2} += $elements[3];
}
foreach my $idx (sort keys %totaux){
print $idx.':00:00 '.$idx.':59:59 '.$totaux{$idx}{Compteur_1}.'
'.$totaux{$idx}{Compteur_2}."n";
}
exit;

__DATA__
2006-07-22 08:17:00 12 22
2006-07-22 08:21:00 8 4
2006-07-22 08:31:00 77 10

Avatar
Srand
Mag wrote:
Rebonjour,

Bien nouvelle question:

Actuellement mon script perl rentre des données dans une table
simplement en rajoutant une ligne qui commence par la date ...
(j'ai donc un champs date)

Je dois changer cela et faire en sorte que ma base aille deux champs
date (Date_Start Date_End) et que mon script perl rajoute les données
dedans

Exemple:

Date Compteur_1 Compteur_2
2006-07-22 08:17:00 12 22
2006-07-22 08:21:00 8 4
2006-07-22 08:31:00 77 10

Apres modif:

Date_Start Date_End Compteur_1 Compteur_2
2006-07-22 08:00:00 2006-07-22 08:59:59 97 36

bref qu'il incremente plutot qu'il cree une ligne + quand
l'heure change, il cree une nouvelle entre puis l'update ..
ca depend ce que tu appelle "table". Si c'est une base de donnees

(SQLite (je sais c qu'une bibliotheque), MySQL, Oracle...) il faut se
pencher sur le SQL et sur la definition de cles primaires.


Comment je peux sortir cela en perl ?


Merci d'avance