Problem beim Auslesen eines Zeitwertes

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
niederrheiner
Beiträge: 87
Registriert: Sa 19. Jan 2008, 17:21
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Rheinberg

Problem beim Auslesen eines Zeitwertes

Beitrag von niederrheiner »

Hallo an Alle,

in einer MYSQL-DB habe ich ein Feld laufzeit mit time definiert. In diesem Feld steht nun folgender Wert: 00:57:50

Ich lese den Wert mit folgenden Codezeilen aus der DB aus:

Code: Alles auswählen

SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('SELECT TR_jahr AS jahr, TR_monat AS monat, TR_tag AS tag, TR_stunden AS stunden, TR_minuten AS minuten, TR_startzeit as startzeit, TR_laufzeit FROM training WHERE TR_ID = ' + inttostr(TR_Key) + ';');
SQLQuery1.Prepare;
SQLQuery1.Open;
 
sqlquery1.First;
if SQLQuery1.RecordCount > 0 then
   if SQLQuery1.FieldCount > 0 then
      begin
          [...]
           tdlaufzeit   := strtotime(SQLQuery1.Fields[6].asstring);
           txtlaufzeit   := SQLQuery1.Fields[6].asstring;
 
showmessage(txtlaufzeit);
showmessage(timetostr(tdlaufzeit));
      end;
SQLQuery1.Close;
Als Ergebnis erhalte ich folgende Ausgaben:
00:57
00:57:00

In beiden Fällen ist es nicht die korrekt abgespeicherte Zeit, es fehlen die Sekunden, bzw. sind 0.

Habe ich eine falsche Funktion, Parameter genommen, oder wo liegt der Fehler? Helft mir doch auf die Sprünge.

Danke für Eure Hilfe und Tipps.

MfG
Günter

Ralph59
Beiträge: 145
Registriert: So 22. Mär 2009, 07:48
OS, Lazarus, FPC: WIN 11 (momentan )
CPU-Target: 64 und 32Bit
Wohnort: Hessen
Kontaktdaten:

Re: Problem beim Auslesen eines Zeitwertes

Beitrag von Ralph59 »

Also,

:?: ich kenne Dein Problem nicht,
:!: aber MySql arbeitet als eingenständiger Server mit einer eigenständigen "Programmiersprache".

Du sendest also immer nur Anfragen an den Server, der diese interpretiert, und die Antwort über den select an dich weierleitet.

Wenn ich so ein Problem habe, -allerdings bei php-, dann schaue ich mir den MYSQL Syntax an http://dev.mysql.com/doc/refman/5.1/de/

Danach teste ich den Syntas des Selects mit Software wie z.B. SQLyog, mir fällt hier keine andere ein, sictze nicht an meinem richtigen PC.

so gibt z. beispiel folgender Syntax auf ein timestamp feld

SELECT (
users.user_name
, date_format(users.user_birthdate, "%Y") as Baujahr
, users.user_joined as seit
, users.user_location as Wohnort
, users.user_groups
, users.user_groups LIKE "%.5%" as Vorsitzender
, users.user_groups LIKE "%.3%" as Vorstand
, users.user_groups LIKE "%.7%" as Vip
, users.user_groups LIKE "%.2%" as Skinner
, users.user_groups LIKE "%.1%" as Fahrer
, date_format( users.user_joined, "%y") as u_date
, date_format(FROM_UNIXTIME( users.user_joined), "%d.%m.%Y") as Mitglied_seit

FROM
activefusion.users
WHERE users.user_groups > ""
order by Vorsitzender desc, Vorstand desc, Vip desc, users.user_name;
');

hier stehen z. B. in den Feldern user_groups 1, 2, 3, ... hier weise ich einen alias zu (Vorsitzender ...
In dem Feld user_joined stehen werte wie "1092952800" die Ausgabe bei dieser Abfrage ergibt direkt wie z.B. 22.2.2002

Bei lazarus hast du jedoch die Möglichkeit, dir in einem Memofeld den kompletten Select Syntax zu schreiben, und das Ergebnis dann auszugeben, so kannst du sehr einfach testen.

:wink: Ich bin mir nicht sicher, ob ich Dir geholfen habe, aber so würde ich das Problem angehen.
Du kannst ja mal die Field Eigenschaften für dein time Feld posten, vieleicht habe ich morgen abend etwas zeit, um das zu testen.

Mit freundlichem Gruß

Ralph.
Fehler sind wie Berge, man steht auf dem Gipfel seiner eigenen und redet über die der anderen.

Antworten