Gambas-it

Gambas3 => Programmazione => Topic aperto da: allegfede - 03 Febbraio 2017, 17:55:52

Titolo: [quasi RISOLTO] inserire un orario nel database mysql
Inserito da: allegfede - 03 Febbraio 2017, 17:55:52
in mysql esiste il tipo di dato time (https://dev.mysql.com/doc/refman/5.7/en/date-and-time-types.html)

come si converte una stringa in formato tempo per inserirla nel db?
Titolo: Re:inserire un orario nel database mysql
Inserito da: Gianluigi - 03 Febbraio 2017, 18:16:09
Che io sappia tutti i database accettano per il tempo la stringa in questo formato  ‘HH:MM:SS’

 :ciao:
Titolo: Re:inserire un orario nel database mysql
Inserito da: allegfede - 05 Febbraio 2017, 14:20:01
ci riprovo, ma se mettto 00:00:00 mi inserisce null

magari con una stringa diferente. Lunedi' controllo
Titolo: Re:inserire un orario nel database mysql
Inserito da: Gianluigi - 05 Febbraio 2017, 14:24:03
Guarda un po cosa ho risposto a Eloaders nell'altro post.
Titolo: Re:inserire un orario nel database mysql
Inserito da: allegfede - 06 Febbraio 2017, 13:40:21
Grazie Gianluigi.
il tuo workaround funziona bene:

Codice: [Seleziona]
Orario = Split(MaskBox_orarioStrategia.Text, ":")
....
$Result!orainizio = Date(2017, 1, 1, orario[0], orario[1], orario[2])
...

del resto la parte GIORNALIERA del campo data la butta direttamente il motore del db e' quindi l'inseriemtno di campi fake non influenza :D

Grazie :D

PS: ma ora che il campo "orario" nel database e' inserito CORRETTAMENTE ... perche' quando lo leggo non si vede nulla (nel database visto con MySQLworkbench c'e')?
Titolo: Re:inserire un orario nel database mysql
Inserito da: Gianluigi - 06 Febbraio 2017, 14:04:33
Grazie Gianluigi.
il tuo workaround funziona bene:

Codice: [Seleziona]
Orario = Split(MaskBox_orarioStrategia.Text, ":")
....
$Result!orainizio = Date(2017, 1, 1, orario[0], orario[1], orario[2])
...

del resto la parte GIORNALIERA del campo data la butta direttamente il motore del db e' quindi l'inseriemtno di campi fake non influenza :D

Grazie :D

PS: ma ora che il campo "orario" nel database e' inserito CORRETTAMENTE ... perche' quando lo leggo non si vede nulla (nel database visto con MySQLworkbench c'e')?

Intanto se la data non ti serve puoi inserite l'orario con Time(0, 0, 0) che funziona come Date.

Per quanto riguarda la lettura io non conosco MySql ma penso vorrai leggere i dati come stringa e allora usa Str$

Codice: [Seleziona]
Public Sub Main()

  Dim d1, d2 As Date
 
  ' Print si comporta come Str$'
  d1 = Date(2017, 2, 22, 1, 23, 15)
  Print d1
  d2 = Time(d1)
  Print d2
  d2 = Time(3, 45, 12)
  Print d2

End

 :ciao:
Titolo: Re:[quasi RISOLTO] inserire un orario nel database mysql
Inserito da: allegfede - 06 Febbraio 2017, 18:01:28
no no .. proprio non mi ritorna nulla ... provo ad allegare uno screenshot


pero' mysql workbench fa vedere che c'e' effettivamente il campo con 00:00:00
Titolo: Re:[quasi RISOLTO] inserire un orario nel database mysql
Inserito da: Gianluigi - 06 Febbraio 2017, 18:16:06
Non so cosa dire, l'unica è sperare che Eloaders posti la soluzione, magari se domani non l'ha ancora fatto vedo di sollecitargliela.

 :ciao:
Titolo: Re:[quasi RISOLTO] inserire un orario nel database mysql
Inserito da: tornu - 06 Febbraio 2017, 21:44:50
in mysql esiste il tipo di dato time (https://dev.mysql.com/doc/refman/5.7/en/date-and-time-types.html)

come si converte una stringa in formato tempo per inserirla nel db?

Ciao allegfede,
non c'è bisogno di convertire la stringa, va inserita semplicemente nel formato testo.
Io uso MySql da sempre, non ho mai avuto problemi con inserimento/lettura di dati tipo orario,
a condizione che:
1) Il campo si di tipo TIME
2) Null sia impostato a NO
3) L'orario inserito sia nel formato (hh:mm:ss), tenendo presente che se non gestisci i secondi puoi ometterli e in
    questo caso MySql inserirà automaticamente :00
Titolo: Re:[quasi RISOLTO] inserire un orario nel database mysql
Inserito da: allegfede - 08 Febbraio 2017, 13:52:39
sul null impostato a no non sono sicuro, ma questo e' quello che vedo da mysql workbench:

ma il valore riportato e' sempre nullo (anche senza tipo date definito) ....
Titolo: Re:[quasi RISOLTO] inserire un orario nel database mysql
Inserito da: allegfede - 08 Febbraio 2017, 19:37:31
In ogni caso per ora ho resettato la tabella delle strategie e sono passato al data type "tiny text".

In questo caso il riempimento e la lettura del campo non presenta problemi.


devo mettere [risolto] ? in realta' e' un problema ancora in essere ... bug?
Titolo: Re:[quasi RISOLTO] inserire un orario nel database mysql
Inserito da: tornu - 08 Febbraio 2017, 22:22:02
Ma il problema lo hai solo con orari tipo 00:00:00 o con qualsiasi orario ?
Titolo: Re:[quasi RISOLTO] inserire un orario nel database mysql
Inserito da: Gianluigi - 09 Febbraio 2017, 07:31:23
Qui puoi vedere (http://www.gambas-it.org/smf/index.php?topic=5455.msg40730#new) un piccolo esempio sull'inserimento e la lettura in MySql dei dati di tipo Time, Date, e DateTime, fatto da Tornu.
Titolo: Re:[quasi RISOLTO] inserire un orario nel database mysql
Inserito da: cesver - 09 Febbraio 2017, 09:46:07
potrebbe interessarti questo mio spezzone di un codice?

nel caso...(attenzione l'apice singolo inserito accanto al doppio apice):

 datavalida1 = Format$(DateBox1.Value, "dd/mm/yyyy hh:nn:ss")
  datavalida2 = Format$(DateBox2.Value, "dd/mm/yyyy hh:nn:ss")
  where = sSQL & " WHERE timestring <'" & datavalida1 & "'"
  between = sSQL & " WHERE timestring BETWEEN '" & datavalida1 & "' AND '" & datavalida2 & "' order by time_ms"
Titolo: Re:[quasi RISOLTO] inserire un orario nel database mysql
Inserito da: allegfede - 12 Febbraio 2017, 20:15:52
Ma il problema lo hai solo con orari tipo 00:00:00 o con qualsiasi orario ?

qualsiasi.

devo dire che questo problema con il db, il problema con rdir e lìimpossibilita di far girare qualsivoglia kdenlive sul mio pc mi ha spinto in questi giorni a riformattare il computer e a riprendere il lavoro (motivo della mia latitanza di questa settimana).

A questo punto, lunedi' rifaro' qualche test per capire se era solo un problema della mia macchina incasinata ...