NEWS
gelöst: mysql query liefert falsche Werte bei Datum < xy
-
Hallo,
ich habe ein Problem:SELECT val AS wert, ts AS datum \ FROM iobroker.ts_number \ WHERE id=(SELECT id FROM iobroker.datapoints WHERE NAME='javascript.0.haus.Heizung.Kueche.Temperatur') \ AND ts > UNIX_TIMESTAMP('2020-02-02 05:00:00')*1000 \ LIMIT 1
liefert korrekt: 1580616720008 = 02.02.2020 - 05:12:00
jedoch:
AND ts < UNIX_TIMESTAMP('2020-02-02 06:00:00')*1000 \
liefert falsch: 1578014400020 = 03.01.2020 - 02:20:00
es sollte doch ein Datum >= 02.02.2020 05:12 geliefert werden!Ich bin sicher, jemand kennt das Problem und wäre sehr dankbar für die Lösung.
-
Ersetz das *1000
Durch /1000 -
/1000 kann nicht richtig sein, weil ts in msec. in der Datenbank steht.
-
@hanss sagte in Hilfe: mysql query liefert falsche Werte bei Datum < xy:
/1000 kann nicht richtig sein, weil ts in msec. in der Datenbank steht.
Achso, hatte das nur angenommen, da ich vor ein paar wochen so nen View mit konvertiertem Datum erstellt habe
-
Habe inzwischen einen Tipp vom Spezialisten erhalten, der funktioniert:
AND ts < UNIX_TIMESTAMP('2020-02-02 06:00:00')*1000
ORDER BY ts DESC LIMIT 1Ohne order by ist der Rückgabewert willkürlich und nicht das, was ich möchte.
-
@hanss die suchparameter muss die datenbank allerdings schon einhalten.
wenn dann bei der ergebnissumme dann mehr wie ein wert übrigbleibt ist in der tat bei limit der konkrete datensatz zufällig (bzw. hängt von der organisation der daten durch die datenbank ab)