Seite 1 von 1

Problem mit .db-Datei und Datumsformat/-berechnung

Verfasst: Fr, 13.09.2013 14:09
von marcel_at_work
Hallöchen allerseits,

Ich habe eine App namens "timetracker" auf dem Handy, deren Datenbank als .db-Datei vorliegt und die sich auch mittels "SQLite Manager" für Firefox anschauen/bearbeiten lässt.
Ich schreibe nun seit ein paar Tagen an einer Synchronisierungsfunktion für den PC und komme mit sämtlichen Daten in der DB klar, aber die gespeicherten DateTime-Werte zweier Spalten kann ich einfach nicht zuordnen bzw. umrechnen.

Zum Beispiel steht in Spalte "startTime" der DateTime-Wert "1.377.986.400.000" und soll den "01.09.13 00:00" darstellen. Der nächste Tag beträgt dann genau "86.400.000" mehr, was auch der genaue Wert für ms/d ist (24 h * 60 min * 60 s * 1.000 ms = 86.400.000 ms). Soweit könnte man damit rechnen, aber wenn ich nun mit Division in die Vergangenheit herunterbreche, bleibt nach 15948 Tagen ein kleiner Rest übrig. Wie kann denn so etwas sein? Und wenn man die 15948 in eine Calc-Spalte mit Datumsformatierung einfügt, wird "01.09.43" angezeigt.
Habe ich einen Denkfehler und macht das einfach keinen Sinn?

Hat von euch vl. jemand Erfahrung damit?



Liebe Grüße,

Marcel

Re: Problem mit .db-Datei und Datumsformat/-berechnung

Verfasst: Fr, 13.09.2013 14:43
von Karolus
Hallo

Der Wert ist anscheinend die Differenz in Millisekunden zum 13. Januar 1970 2:00 Uhr
Unter Berücksichtigung der Schaltjahre und Mitteleuropäischer Sommerzeit liegt der 1.1.1970 ziemlich nah.

Mit anderen Worten:
dividiere durch (24*60*60*1000) und addiere dann den 13.Jan.1970 2:00


Karolus

Re: Problem mit .db-Datei und Datumsformat/-berechnung

Verfasst: Fr, 13.09.2013 15:24
von marcel_at_work
Hey Karolus,

wow, genial.;-)
Für den 01.09.13 müsste ich dann aber mit dem 01.01.70 rechnen. Aber es klappt.;-))


Einen wundervollen Nachmittag noch,

Marcel

Re: Problem mit .db-Datei und Datumsformat/-berechnung

Verfasst: So, 27.10.2013 20:15
von marcel_at_work
Hallo allerseits,

wie würde denn die Formatierung in entgegengesetzte Richtung funktionieren?

Mit...

Code: Alles auswählen

Dim nMillisecondsPerDay As Double
Dim dUnixDate, dDate As Date
			
dUnixDate = "01.01.1970 02:00:00"
nMillisecondsPerDay = 86400000
dDate = "14.08.2013 07:30:00"
msgbox (dDate - dUnixdate) * nMillisecondsPerDay
... komm ich knapp 70 Jahre am erhofften Ergebnis vorbei. :(

Und wie müßten die Variablen deklariert werden?


Viele Grüße,

Marcel

Re: Problem mit .db-Datei und Datumsformat/-berechnung

Verfasst: Mo, 28.10.2013 08:09
von Karolus
Hallo
Du hast dUnixDate nicht als Date deklariert.

Code: Alles auswählen

Dim nMillisecondsPerDay As long
Dim dUnixDate as Date, dDate As Date
         
dUnixDate = "1970-01-01 2:00" 'cdatefromiso("1970-01-01") +1/12'
nMillisecondsPerDay = 86400000
dDate = "2013-09-01"
msgbox dDate
msgbox dUnixDate
msgbox ((dDate - dUnixdate) * nMillisecondsPerDay)
 
nb: nMillisecondsPerDay ist eine ganze Zahl (long) und kein Dezimalwert (double)
Wenn möglich nimm für literale Datumsstrings immer Isoformat JJJJ-MM-TT evtl. in Verbindung mit der Funktion cDateFromIso(..)

Karolus

Re: Problem mit .db-Datei und Datumsformat/-berechnung

Verfasst: Di, 29.10.2013 22:08
von marcel_at_work
Hey Karolus,

"mal wieder" danke, du bist ein Schatz! :)



Einen wundervollen Abend noch,


Marcel