[MySQL] Conversione dati e copia in in altra colonna

samurai.sette

Utente Attivo
17 Dic 2015
235
6
18
Ciao a tutti.
Ho un consiglio da chiedervi in merito a un database Mysql e speravo tantissimo in un vostro aiuto.
Spiego cosa vorrei fare.

Il mio database riceve dati da un macchinario ogni 10 minuti;
il database è composto da 4 colonne, e più precisamente:
id(4)|int|auto_increment|chiave primaria
tempo|time
tempo_secondi|double
dati|double

Quello che il mio macchinario fa è questo: effettua una lettura e invia il dato al database. Esempio:
id:15
tempo: 09:13:06
tempo_secondi:
dati:(dati registrati dal macchinario)

Come potete vedere tutte le colonne sono riempite tranne "tempo_secondi".Quindi quello che vorrei fare è questo: ogni volta che arriva una lettura al database vorrei che in automatico il tempo venga calcolato in secondi e scritto nella colonna "tempo_secondi".
Qualche consiglio?
Ciao, grazie.
 
potresti provare con,
PHP:
CREATE TRIGGER mytrigger BEFORE INSERT ON tabella FOR EACH ROW
    IF NEW.tempo_secondi IS NULL THEN
        SET NEW.tempo_secondi := TIME_TO_SEC(tempo);
    END IF;;
possibilmente NON sul db operativo, ma su una copia
e se funziona lo applichi

non perdere la punteggiatura per strada
aggiusta i nomi

e fai sapere che son curioso

qui la doc
http://www.w3resource.com/mysql/date-and-time-functions/mysql-time_to_sec-function.php
http://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html

ps doc dice che "DEFAULT" value può essere solo una costante da cui "TRIGGER"
 
Ciao a tutti. Scusate se non ho risposto subito ma sono stato un po impegnato con il lavoro.
Per Marino51.
Ho provato a inserire il codice che mi hai scritto in PhpMyadmin ma mi genera un errore. Te lo riporto.
Codice:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3

Per Borgo Italia.
Per quanto riguarda i dati, il macchinario li invia direttamente al database e per leggerli (e quindi lavorarci) utilizzo il linguaggio php.
 
PHP:
Ho provato a inserire il codice che mi hai scritto in PhpMyadmin ma mi genera un errore. Te lo riporto.
right syntax to use near '' at line 3
verifica il codice che hai scritto, perché c'è un errore di sintassi,
verifica anche la versione di mysql perché potrebbe non avere quello specifico comando
 
ciao
oltre a quello che ti ha detto marino51 potresti provara uana cosa del genere
intando darei al campo tempo_secondi default 0
PHP:
<?php
function secondi($t){
    $te=explode(":",$t);//tempo in formato h:m:s (è così?)
    return $te[0]*360+$te[1]*60+$te[2];

}
//dati di connessione
//leggi solo i record che non sono stati aggiornati precedentemente
$query=mysql_query("SELECT * FROM tabella WHERE tempo_secondi!=0");
if(mysql_num_rows($query)==0){
    echo "non ci sono record da aggiornare";
}else{
    while($riga=mysql_fetch_array($query)){
        $id=$riga['id'];
        $sec=secondi($riga['tempo']);
        $q=mysql_query("UPDATE tabella SET tempo_secondi=$sec WHERE id=$id");
    }
}
//ecc...
?>
 
Ciao Borgo Italia. Ci sei sempre tu che mi aiuti :)
Il codice che mi hai scritto funziona alla grande!!!
 
Ultima modifica:
Ciao.
Una domanda: se volessi copiare una colonna esattamente così com'è in un altra colonna come dovrei fare? La procedura è la stessa?
Ho provato a modificare il codice di Borgo Italia eliminando la funzione "secondi", ma poi mi genera sempre errore alla seconda query.
Io ho fatto in questo modo
Codice:
<?php

  $con = mysql_connect ("localhost", "root","") or die ("Connessione al server fallita! ".mysql_error());
        
  $db1 = mysql_select_db ("macchinario", $con) or die ("Connessione al database macchinario fallita! ".mysql_error());

  $query=mysql_query("SELECT * FROM monitoraggio WHERE data !=0");

  if(mysql_num_rows($query)==0)
  {
    echo "non ci sono record da aggiornare";
  }
  else
  {
    while($riga=mysql_fetch_array($query))
  {

    $q=mysql_query("UPDATE macchinario SET giorno=data");
  
  }
}

?>
Secondo voi dove sbaglio?
Ciao, grazie.
 
ciao
prova a correggere
PHP:
<?php
//...
while($riga=mysql_fetch_array($query)){
    $id=$riga['id'];
    $q=mysql_query("UPDATE macchinario SET giorno=data WHERE id=$id");
  }
//....
?>
oppure
PHP:
<?php
//...
while($riga=mysql_fetch_array($query)){
    $id=$riga['id'];
    $d=$riga['data'];
    $q=mysql_query("UPDATE macchinario SET giorno='$d' WHERE id=$id");
  }
//....
?>
 

Discussioni simili