[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.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
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"
 

samurai.sette

Utente Attivo
17 Dic 2015
235
6
18
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.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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...
?>
 

samurai.sette

Utente Attivo
17 Dic 2015
235
6
18
Ciao Borgo Italia. Ci sei sempre tu che mi aiuti :)
Il codice che mi hai scritto funziona alla grande!!!
 
Ultima modifica:

samurai.sette

Utente Attivo
17 Dic 2015
235
6
18
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.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
Autore Titolo Forum Risposte Data
A Conversione Codice da mysql a mysqli Database 1
C Conversione data in formato MySql Classic ASP 1
M Conversione MDB --> MySQL MySQL 9
R mysql stored procedure (conversione testo in nome campo) Database 1
K form Inserimento record mysql PHP 2
P Mysql lento a cancellare MySQL 1
P Codifica caratteri speciali mysql php PHP 0
N MAX() + ADD_DATE - per update su Mysql MySQL 0
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
W MySQL ciclo in SELECT MySQL 0
L Mysql gestionale multipiattaforma MySQL 0
W MySQL SELECT list dinamica MySQL 0
M utilizzo mysql in nodejs - crea createdAt e updateAt MySQL 1
T colonne di tabelle mysql ordinate MySQL 0
M Sintassi "personalizzata" per mysql workbench? MySQL 0
A Mysql MySQL 0
F Ricreare struttura php+mysql su Xampp Apache 0
M Array associativi php su 2 campi mysql PHP 10
Z Controllo giorni MYSQL PHP 0
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
S problema con recupero dati tabella mysql PHP 2
E Progressbar estrazione dati da tabella mySQL Ajax 9
Z MySql injection PHP PHP 1
D controllare valore in tabella mysql PHP 0
A pulsante di update campo mysql con javascript Javascript 2
R Tutto su utf-8 ma ancora problemi con i caratteri speciali in mysql MySQL 1
T differenza fra mysql xampp e un mysql server Database 0
R Importazione csv su mysql tramite array PHP 2
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
D problema php mysql PHP 1
D problema php mysql PHP 1
N Server mysql non raggiungibile da connessione esterna MySQL 1
B Crea pdf da tabella mysql "ultima riga modificata" MySQL 4
D evitare di inserirre duplicati in mysql PHP 4
L salvare codice html in mysql PHP 3
L Google chart php mysql PHP 2
S Gestire scelta dropdown con dati da Mysql PHP 2
K cron job mysql PHP 3
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
R Errore UPDATE tabella mysql PHP 1
R Caricamento immagine su cartella remota + mysql PHP 3
D Emoji in mysql Database 0
L Aiuto per programma web php/mySQL PHP 2
S Problema esportazione tabelle Mysql in Excel PHP 0

Discussioni simili