2012-04-12 6 views
0

Ich speichere ein Datum und das ist immer 1698-19-20 und nicht 2012-4-12. Hier sieht man den Fehler? Datum gespeichert als Integer.Ich bekomme jemals ein falsches Datum in SqLite

mit dem Rechner berechnet: 1334262386066 Millisekunden

42,309182713914 Jahr + 1970 = ~ 2012

Code:

Calendar cal = Calendar.getInstance(); 
Date date = cal.getTime(); 
calendarEntity.setDate(date); 

SQLite-Abfrage:

SELECT strftime('%Y-%m-%d',DATE) FROM CALENDAR_ENTITY 

Tabelle:

CREATE TABLE 'CALENDAR_ENTITY' ('_id' INTEGER PRIMARY KEY ,'TITLE' TEXT,'NOTICE'  TEXT,'DATE' INTEGER,'BABY_ID' INTEGER NOT NULL) 
+0

Es sollte 2012-4-12 sein, aber ich bekomme 1698-19-20. Im Debugger ist es richtig, nur in der Datenbank ist es falsch. – user949884

+0

Es funktioniert gut, denke ich zumindest in meinem Computer. Haben Sie versucht, dieses Datumsobjekt zu drucken, um zu sehen, was an die Datenbank gesendet wird? – mbaydar

+0

Ich habe greenDao als Framework für ORM im Format java.util.Date verwendet. – user949884

Antwort

1

Wenn Sie diese Rückkehr lange wie diese verwenden können, denke ich, Ihr Problem wird sich lösen.

Date date = new Date(1334262386066l);

Dies wird zurückgeben, was Sie erwartet haben. Und das ist, was er druckt

Thu Apr 12 23:26:26 EEST 2012

+0

Sie meinen, ich sollte in sqlite zu lange werfen? – user949884

+0

Es ist schon lang und du kannst es benutzen wie ich es in meinem Code zeige. Ich denke, dass strftime nicht richtig funktioniert. – mbaydar

+0

Vielen Dank für Ihre Mühe! – user949884

1

Das Problem ist, dass strftime Funktion das Datum als text in einem dieser Formate erwartet:

YYYY-MM-DD 
YYYY-MM-DD HH:MM 
YYYY-MM-DD HH:MM:SS 
YYYY-MM-DD HH:MM:SS.SSS 
YYYY-MM-DDTHH:MM 
YYYY-MM-DDTHH:MM:SS 
YYYY-MM-DDTHH:MM:SS.SSS 
HH:MM 
HH:MM:SS 
HH:MM:SS.SSS 
now 
DDDD.DDDD 

Sie speichern das Datum als integer die strftime Funktion nicht verarbeiten kann. Weitere Details zu den SQLite-Datetime-Funktionen here (oder here, Seite 80).

+0

Danke für die Aufklärung! – user949884

+0

Aber das funktioniert. Datum Zeit/1000 SELECT strftime ('% m-% d-% Y', 1092941466, 'unixepoch'); – user949884

+0

In meinem Fall: SELECT strftime ('% m-% d-% Y', 1334262386066/1000, 'unixepoch') VON BABY_ENTITY – user949884

Verwandte Themen