timestamp -> string

Alle Fragen zur Programmierung, die nicht in die speziellen Themen passen
Antworten
thomas
Foriker
Beiträge: 7
Registriert: Di 23. Jan 2007, 11:01
Kontaktdaten:

timestamp -> string

Beitrag von thomas » Di 23. Jan 2007, 11:10

Hallo,
hiermit lese ich die Daten aus einer DB.

PUBLIC SUB Button1_Click()
DIM rows AS Integer
DIM i AS Integer
'Einlesen der Datensätze,
rs = cn.Exec("select * from status")
'Daten in Tabell ausgeben
rows = rs.Count
WITH ColumnView2
.Columns.Count = 4
.Columns[0].Width = 50
.Columns[0].Text = "ID"
.Columns[1].Width = 200
.Columns[1].Text = "Datum / Uhrzeit"
.Columns[2].Width = 150
.Columns[2].Text = "Job"
.Columns[3].Width = 400
.Columns[3].Text = "Message"
END WITH
ColumnView2.Clear
FOR i = 1 TO rows
ColumnView2.Add(i,rs!id)
ColumnView2[1] = rs!datumuhrzeit
ColumnView2[2] = rs!job
ColumnView2[3] = rs!message
rs.MoveNext
NEXT
END

Das Feld datumuhrzeit ist vom Typ timestamp, gibt es da eine einfache Möglichkeit den Wert in Datum und Uhrzeit als String zu zerlegen ?
Im ColumnView kommt der Inhalt von datumuhrzeit nur undefinierbare Zeichenfolge an.
bye,
Thomas

grefabu
Foriker
Beiträge: 15
Registriert: Sa 15. Apr 2006, 13:49
Wohnort: Bad Homburg
Kontaktdaten:

Beitrag von grefabu » Mi 24. Jan 2007, 09:39

Hi Thomas,

wenn ich mir mit phpMyAdmin eine Tabelle mit einem Feld Typ timestamp anlegen lasse, und automatisch ausfüllen lasse erhalte ich eine Ausgabe:

Code: Alles auswählen

2007-01-24 09:25:47
Das kannst Du jetzt mit

Code: Alles auswählen

Split( String [ , Separators , Escape ] ) 
in Teilstrings zerlegen.

Warum bei dir aber undefinierbare Zeichen herauskommen kann ich dir grad nicht sagen.

Gregor

P.S. Ich weiß nicht ob es substr() in Gambas gibt
Siegen tut, wer öfters aufsteht als hinfällt. [irgend jemand]

thomas
Foriker
Beiträge: 7
Registriert: Di 23. Jan 2007, 11:01
Kontaktdaten:

Beitrag von thomas » Mi 24. Jan 2007, 17:17

Hallo Gregor,

danke für Deine Antwort, mit phpmyadmin oder selbst mit select * from status; auf der Konsole ist die Ausgabe io.
Hat Gambas ein Problem mit den Datentyp timestamp?
Das Datenbankbeispiel von Gambas liefert diese Ausgabe für den 24.01.2007 00:10:01
-> 22.04.-26760-275:-15:-50.
Kann damit jemand etwas anfangen, oder liegt das Problem wo anders ?
bye,
Thomas

nibbana
Foriker
Beiträge: 143
Registriert: Fr 16. Dez 2005, 21:32
Kontaktdaten:

Beitrag von nibbana » Mi 24. Jan 2007, 19:45

Das Format des Rückgabewertes von Timestamp hatte sich bei mysql mal geändert. Von "19981231235959" nach "1998-12-31 23:59:59". Deshalb interpretiert gambas den Wert falsch.

mfg. nibbana
"Ich denke, also bin ich." (Descartes)

"Ich denke nicht, also was?" (Zen Meister Seung Sahn)

thomas
Foriker
Beiträge: 7
Registriert: Di 23. Jan 2007, 11:01
Kontaktdaten:

Beitrag von thomas » Do 25. Jan 2007, 10:51

Hallo,

danke für Deine Antwort,
da bleibt wohl nur der Weg über die Ausgabe in eine Datei :cry:
bye,
Thomas

nibbana
Foriker
Beiträge: 143
Registriert: Fr 16. Dez 2005, 21:32
Kontaktdaten:

Beitrag von nibbana » Do 8. Feb 2007, 19:19

Ich habe mal ein Patch gegen die altuelle SVN-Version geschrieben.

Code: Alles auswählen

--- gb.db.mysql/src/main.c  (revision 206)
+++ gb.db.mysql/src/main.c  (working copy)
@@ -352,6 +352,11 @@
         case FIELD_TYPE_TIMESTAMP:
           switch(strlen(data))
           {
+            case 19:
+             sscanf(data, "%4hu-%2hu-%2hu %2hu:%2hu:%lf", &date.year, &date.month, &date.day, &date.hour, &date.min, &sec);
+             date.sec = (short)sec;
+             date.msec = (short)((sec - date.sec) * 1000 + 0.5);
+             break;
             case 14:
               sscanf(data, "%4hu%2hu%2hu%2hu%2hu%lf", &date.year, &date.month, &date.day, &date.hour, &date.min, &sec);
               date.sec = (short)sec;
Damit sollte die Umwandlung des neuen Timestamp-Formats funktionieren.

mfg. nibbana
"Ich denke, also bin ich." (Descartes)

"Ich denke nicht, also was?" (Zen Meister Seung Sahn)

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste