Datum Problem MYSQL
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfragen
daten
differenz
fan
folgendes schreiben
gen
grundgedanke
insert
klar mache
klausel
kleines vorwort
milliardenbereich
schema
situation
statement
tabelle
test
vielen dank
werte integer insert
zeile
-
Hi
Folgendes Problem. als kleines Vorwort:
Hier geht es nur um mysql. DAs hier hat nichts mit php zu tun!
Ich habe eine Tabelle namens test
create table test (id integer auto_increment, zeit time);
Und diese hat jetzt folgende Werte:
ID Zeit
1 23:15:00
2 12:13:11
Und jetzt m?chte ich das bei 3 dann die Differenz der beiden Zeiten steht.
O-Checka hat mir auch schon weiter geholfen, aber ganz hat es immer noch nicht geklappt.
Grundgedanke war:
sec_to_time(time_to_sec(zeit1) - time_to_sec(zeit2))
dann hab ich mir gedacht:
insert into test3 values(id, sec_to_time(time_to_sec(zeit1) - time_to_sec(zeit2)));
Allerdings hab ich jetzt 0 Plan was ich dort bei zeit1 und f?r zeit2 schreiben soll. Erster Versuch war f?r zeit1:
select zeit from test3 where id = 1;
und f?r zeit2 dann:
select zeit from test3 where id = 2;
Aber das hat nat?rlich nicht funktioniert =(
Kann mir jemand helfen?
Gru? Tobi -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
War der Datentyp time nicht so ein komischer, der die Zeit als eine Zahl im Milliardenbereich abspeichert ab einem gewissen Datum (x.x.1970?)?
-
Hi
Also ich hab mal ein Bisschen versucht das zu Protokollieren:
- Daten abfragen (von test)
- Differenz ausrechnen (von id 1 u. 2)
- Differenz einf?gen
Eigentlich recht einfach? Brauchst du das f?r Delphi??
b2k-fan -
@ Sweetflake:
NEin das ist nicht so. Time speichert die Uhrzeit nach Schema 12:12:00.
Dazu einfach insert into test3 values(id, 121200);
eingeben.
Hi
Also ich hab mal ein Bisschen versucht das zu Protokollieren:
- Daten abfragen (von test)
- Differenz ausrechnen (von id 1 u. 2)
- Differenz einf?gen
Eigentlich recht einfach? Brauchst du das f?r Delphi??
Jo das brauch ich f?r Delphi. Mitlerweile bin ich soweit das ich das ich Zeit1 und Zeit2 in eine Varibale speicher und dann Subrathier und das dann einf?ge. Aber ich will das ganze in einer Abfrage habe.
Kann ich mit mysql eigentlich folgendes schreiben:
create table neuertest (werte integer);
insert into neuertest(time_to_sec(select zeit from test where id=1));
Mein gro?es Problem ist eigentlich nur das ich nicht wei? wie ich der Funktion time_to_sec, bzw. sec_to_time, klar mache das ich aus Tabelle test den Wert mit ID=1 errechnen will und den dann per insert itno einf?gen.
Vielen Dank f?r eure Hilfe.
Gru? Tobi
i
-
Hier geht es nur um mysql.
...
create table test (id int auto_increment primary key, zeit time);
...
Und jetzt m?chte ich das bei 3 dann die Differenz der beiden Zeiten steht.
um dir die differenz anzuzeigen kannst du in deinem(!) fall folgendes verwenden:
SELECT SEC_TO_TIME(MAX(TIME_TO_SEC(zeit)) - MIN(TIME_TO_SEC(zeit))) AS Differenz from test ORDER BY Differenz;
das geht aber schon nicht mehr, wenn du 3 zeilen h?ttest, bei der die 3. zeile den niedrigsten wert in zeit h?tte.
zum einf?gen dieser differenz als neuen datensatz kann ich leider nur sagen, dass es nur mit mysql nicht geht. es gibt zwar einen "INSERT .. SELECT - Syntax", aber es gibt da eine wichtige regel:
http://dev.mysql.com/doc/mysql/de/INSERT_SELECT.html:
Die Ziel-Tabelle des INSERT-Statements darf nicht in der FROM-Klausel des SELECT-Teils der Anfrage erscheinen, weil es in ANSI-SQL verboten ist, aus derselben Tabelle auszuw?hlen (SELECT), in die eingef?gt wird. (Das Problem liegt darin, dass das SELECT m?glicherweise Datens?tze finden w?rde, die fr?her w?hrend desselben Laufs eingef?gt wurden. Wenn man Sub-Select-Klauseln verwendet, k?nnte die Situation schnell sehr verwirrend werden!)
hoffe ich konnte dir helfen.
mfg
-----------
nachtrag:
[qoute]Kann ich mit mysql eigentlich folgendes schreiben:
create table neuertest (werte integer);
insert into neuertest(time_to_sec(select zeit from test where id=1));[/quote]
joa sicher geht das. eben mit "INSERT ... SELECT".
CREATE TABLE neuertest (werte INT); INSERT INTO neuertest (werte) SELECT TIME_TO_SEC(test.zeit) FROM test WHERE test.id=1;
Beitrag ge?ndert am 15/12/2004, 10:15 von des-sys -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage