MySQL: Zeiten subtrahieren oder: Wie zeigte er die Warnings an
Rol
- datenbank
0 Sönke Tesch0 Rol
0 der_bernd0 André Laugks
Hi,
ich habe folgende MySQL Tabelle:
+--------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------+------+-----+---------+----------------+
| id | int(11) | | PRI | 0 | auto_increment |
| begin | time | YES | | NULL | |
| end | time | YES | | NULL | |
| diff | time | YES | | NULL | |
+--------------+---------+------+-----+---------+----------------+
und möchte, dass die Differenz zwischen 'begin' und 'end' in 'diff' geschrieben wird:
UPDATE table SET diff=end-begin;
Ergebniss:
Bei manchen Zeilen klappts, bei anderen kommt 'Warnings: 1'.
Zu meiner Schande muss ich gestehen, dass ich mich mit den Warnings meiner MySQL noch garnicht beschäftig habe und jetzt weiss ich nicht einmal wie ich die vollständige Wanrning auslese.
Hat jemand von Euch 'nen Tipp, wie ich
a) zwei Zeiten subtrahiere
und
b) die Warnings richtig auslese ?
Danke,
Rol
UPDATE table SET diff=end-begin;
Ergebniss:
Bei manchen Zeilen klappts, bei anderen kommt 'Warnings: 1'.
Hat jemand von Euch 'nen Tipp, wie ich
a) zwei Zeiten subtrahiere
Wenn's einfach mit Minus nicht geht, kannst du die Zeiten zur Not immernoch mit unix_timestamp() in Sekunden umwandeln - die lassen sich garantiert subtrahieren.
b) die Warnings richtig auslese ?
Mmh, entweder mysql_error() oder Kapitel 22 der Anleitung, "The MySQL Log Files".
Gruß,
soenk.e
Danke erstmal.
a) zwei Zeiten subtrahiere
Wenn's einfach mit Minus nicht geht, kannst du die Zeiten zur Not immernoch mit unix_timestamp() in Sekunden umwandeln - die lassen sich garantiert subtrahieren.
Sowas habe ich gerade gebastelt, ist aber rechtunmständlich da die eigentliche Sache etwas komplexer ist als ich im Posting dargestellt hatte.
b) die Warnings richtig auslese ?
Mmh, entweder mysql_error() oder Kapitel 22 der Anleitung, "The MySQL Log Files".
Wie und wo genau?
Gruß
Rol
b) die Warnings richtig auslese ?
Mmh, entweder mysql_error() oder Kapitel 22 der Anleitung, "The MySQL Log Files".
Wie und wo genau?
Wie und wo genau was? Wie und wo genau dein MySQL-Server seine Logs speichert steht im Kapitel 22 der Anleitung, "The MySQL Log Files".
Gruß,
soenk.e
PS: Ok, ich les' mal vor: "All logs can be found in the mysqld database directory." :)
» PS: Ok, ich les' mal vor: "All logs can be found in the mysqld database directory." :)
Arme Deutschland! Kein deutsches Handbuch ;)
Marco Strauss
Hallo Rol,
ich vemute mal dein Problem taucht bei den Einträgeen auf die "über die Mitternachtsgrenze gehen".
Beispiel:
begin = 5
end = 10
diff = 5
jedoch:
begin = 23
end = 1
diff = -22
wenn es das ist, bleibt dir nicht viel anderes über, als die von Söhnke gepostete Lösung oder etwas eigenes "stricken" das diesen Negativwert entsprechen "zurechtbiegt".
Alles klar? Oder hab ich mich grad arg "vertan"?
Gruß
der_bernd
Hallo!
Hat jemand von Euch 'nen Tipp, wie ich
a) zwei Zeiten subtrahiere
Verwende zukünftig anstatt TIME den Spaltentype DATETIME. Mit DATETIME kann man besser rechnen.
MfG, André Laugks