MySQL: Datum timestamp rechnen subtrahieren - wundersames Ergebnis

Zeneca

Benutzer
Beiträge
9
Hallo allerseits,

mir fehlt da bei einem Rechenergebnis mit Datum irgendwie das Verständnis
ich mache folgende Abfrage:
Code:
SELECT NOW(), datum, (NOW() - `datum`) FROM `downloads` WHERE `uid` = 2574 ORDER BY `ID` DESC LIMIT 0, 1

wobei das feld "datum" =
datum timestamp CURRENT_TIMESTAMP
im format: yyyy-mm-dd hh:mm:ss hinterlegt wird

und bekomme dieses Ergebnis:

[NOW()] => 2017-12-02 17:55:51
[datum] => 2017-12-01 11:32:42
[(NOW() - `datum`)] => 1062309

ich komme aber bei ~30 Stunden auf ~100000 Sekunden und nicht 1Mio
wenn ich den Zeitraum ein bisschen enger lege (also ~6min) bekomme ich:

[NOW()] => 2017-12-03 09:26:41
[datum] => 2017-12-03 09:20:42
[(NOW() - `datum`)] => 599

was rechnet der da?
100sec/min?
und wenn ich obige beispiel mit 100 sec rechne komme ich auf knapp 200k sec
also bei weitem auch keine Mio
ich bin verwirrt
hat jemand eine Idee wie ich das Ergebis interpretieren muß?

vielen Dank im Voraus

Gruß
Zen
 
Werbung:
ich bin verwirrt
hat jemand eine Idee wie ich das Ergebis interpretieren muß?

Schwer zu sagen, MySQL ist halt eine Ansammlung von Bugs. Siehe auch Why PostgreSQL is better than MySQL |

Ach ja, ich bekomme:

Code:
test=# create table zeneca (datum timestamp);
CREATE TABLE
test=*# insert into zeneca values ('2017-12-01 11:32:42');
INSERT 0 1
test=*# select now(), datum, now() - datum from zeneca ;
  now  |  datum  |  ?column?  
-------------------------------+---------------------+-----------------------
2017-12-03 10:20:38.144865+01 | 2017-12-01 11:32:42 | 1 day 22:47:56.144865
(1 Zeile)

test=*#
 
Hallo A.K.

besten Dank für das flotte feedback

dann habe ich bei der Abfrage so erst mal nichts falsch gemacht und darf mich nur wundern? :(
dein Ergebnis sieht schon besser aus, hast du das mit PostgreSQL gemacht oder auch mit MySQL?
würde mir aber auch nur bedingt weiterhelfen, da ich das Ergebnis eh in Sekunden brauche
wie auch immer, muß ich das halt irgendwie mit php berechnen

trotzdem Danke (wink)
 
PostgreSQL. Um Sekunden zu erhalten:

Code:
test=*# select extract(epoch from '2017-12-03 09:26:41'::timestamp) - extract(epoch from '2017-12-01 11:32:42'::timestamp) as sekunden;
 sekunden
----------
  165239
(1 Zeile)

test=*#

test=*# select now(), datum, now() - datum as interval, extract(epoch from now()) - extract(epoch from datum) as sekunden from zeneca ;
  now  |  datum  |  interval  |  sekunden   
-------------------------------+---------------------+-----------------------+------------------
 2017-12-03 10:20:38.144865+01 | 2017-12-01 11:32:42 | 1 day 22:47:56.144865 | 164876.144865036
(1 Zeile)
 
Hey, vielen Dank für den Vorschlag,
aber ist schon ganz schön umständlich
beim Brüten über php hat es sich dann doch so einfach ergeben:
Code:
SELECT UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(datum) FROM `downloads` WHERE ....
so macht es selbst das mySQL

das MySQL so buggy sein soll/ist shockt mich jetzt schon ein bisschen
aber da kann ich frühestens bei der nächsten Providerwahl drauf achten

merci und vielleicht bis demnächst

Zen
 
Zuletzt bearbeitet:
Werbung:
Zurück
Oben