Datensatz nach Datum / Uhrzeit sortieren?

  • 8 Antworten
  • Neuester Beitrag
Diskutiere Datensatz nach Datum / Uhrzeit sortieren? im Android App Entwicklung im Bereich Betriebssysteme & Apps.
B

badkeks

Neues Mitglied
Hallo Leute,

nachdem ich endlich meine restlichen Problem gelöst habe, stehe ich jetzt vor meinem letzten Problem.

Und uwar wie schaffe ich es innerhalb des SQL - Statement nach dem Datum zu sortieren.. (weil es gibt ja keinen speziellen datentyp für ein datum)

Ich hab ein Feld vom Typ Text das heißt _date und eines das heißt _time

Beispiel für den Inhalt der Felder:
_date = 10.3.2011
_time = 10:30

Probiert hab ich das ganze mit:

SELECT strftime('%d%m%y', _date) AS dateNew ...

Allerdings ohne Erfolg..

Vielleicht kann mir da einer noch helfen!

Vielen Dank schonmal!
 
S

swordi

Lexikon
meistens speichert man das datum als timestamp und formatiert es dann wie man es braucht
 
B

badkeks

Neues Mitglied
swordi schrieb:
meistens speichert man das datum als timestamp und formatiert es dann wie man es braucht
Versteh ich das richtig, dass wenn ich den Datentyp in SQL vom Feld _date, _time auf Timestamp ändere, dass die Sortierung direkt durch das SQL-Statement funktioniert, oder muss ich zusätzlich weiter formatieren..?!?
 
F

funcoder

Fortgeschrittenes Mitglied
Ein Timestamp ist ja nur die Zeit in Millisekunden die nach dem 1.1.1970 vergangen sind. Also eine nette Integer Zahl.
Zugleich bedeutet es, das desto höher die Zahl das Datum an neuesten ist, bzw. die kleineste Zahl ist das am weit entfernteste Datum.

Möchtest du diese sortieren benötigst du bei deinem SQL Select ein "order by Timestamp" mit dranhängen. Bzw. "ASC" oder "DESC", je nachdem ob aufsteigend oder absteigend.

Das wäre es schon. :)
 
B

badkeks

Neues Mitglied
Hallo Leuts irgendwie krieg ich das immer noch nicht ganz gebacken..

Der Datentyp der Felder _date und _time sind mittlerweile auf den Datentyp "Timestamp" geändert worden...

Der Eintrag sieht wie folgt aus:

_date = 10.3.2011
_time = 10:30

Wenn ich das ganze jetzt sortieren will mit ORDER BY _date, _time
funktioniert das nur sehr bedingt teilweise stimmt die Reihenfolge dann aber wieder 1 - 2 Ausreiser...

Was genau muss ich denn noch machen?

Ist die Formatierung ins Format dd.mm.yyyy ein Problem?
 
M

maniac103

Experte
badkeks schrieb:
Hallo Leuts irgendwie krieg ich das immer noch nicht ganz gebacken..

Der Datentyp der Felder _date und _time sind mittlerweile auf den Datentyp "Timestamp" geändert worden...

Der Eintrag sieht wie folgt aus:

_date = 10.3.2011
_time = 10:30

Wenn ich das ganze jetzt sortieren will mit ORDER BY _date, _time
funktioniert das nur sehr bedingt teilweise stimmt die Reihenfolge dann aber wieder 1 - 2 Ausreiser...

Was genau muss ich denn noch machen?

Ist die Formatierung ins Format dd.mm.yyyy ein Problem?
Du musst _date und _time durch ein Timestamp-Feld ('_time') ersetzen. Da steht dann (wie schon erwähnt) die Zeitspanne in Millisekunden seit 1.1.1970 0:00 drin, die bei der Ausgabe passend formatiert werden kann.
Dann klappts auch mit dem Sortieren ;)
 
B

badkeks

Neues Mitglied
maniac103 schrieb:
Du musst _date und _time durch ein Timestamp-Feld ('_time') ersetzen. Da steht dann (wie schon erwähnt) die Zeitspanne in Millisekunden seit 1.1.1970 0:00 drin, die bei der Ausgabe passend formatiert werden kann.
Dann klappts auch mit dem Sortieren ;)

Aber Timestamp ist doch der Datentyp der SQL - Tabelle oder sehe ich das falsch..?!?
WEil ich hab _date und _time als Timestamp deffiniert..

Ich hab eine Datepicker welcher das Datum im Format 1.1.2011 erfasst und in ein Formularfeld schreibt welches ich dann anschließend in die DB schreibe..
Selbiges auch beim Timepicker... hier das Format HH:MM
 
DieGoldeneMitte

DieGoldeneMitte

Experte
Deine Angaben sind widersprüchlich. Einerseits redest du davon, dass du als SQL Typ typestamp angibst, aber andererseits redest Du davon, dass Du aus dem Zeitangaben irgendwelche String-repäsentationen ausrechnest und die dann speicherst.

Und eine Zeitangabe auf zwei Spalten zu packen ist eine gefährliche Idee. Denn eine Zeitangabe, die Du nur teilweise interpretiest, kann uninterpretierte Anteile enthalten, die dann bei der Sortierung zu den beobachteten Effekten führen.

ADD Beispiel:
* am 1.1.2012 wird das Datum 1.1.2020 13:00 gespeichert.
* am 2.1.2012 wird das Datum 1.1.2020 11:00 gespeichert.

Durch deine Datenstruktur kann die Uhrzeit möglicherweise das Datum der Erstellung erhalten, die du aber nicht ausliest. Beim Sortieren stünde dann 13:00 vor 11:00.
 
Zuletzt bearbeitet:
M

maniac103

Experte
badkeks schrieb:
Aber Timestamp ist doch der Datentyp der SQL - Tabelle oder sehe ich das falsch..?!?
WEil ich hab _date und _time als Timestamp deffiniert..
Genau das ist ja das Problem ... Timestamp speichert beides in einem.

Ich hab eine Datepicker welcher das Datum im Format 1.1.2011 erfasst und in ein Formularfeld schreibt welches ich dann anschließend in die DB schreibe..
Selbiges auch beim Timepicker... hier das Format HH:MM
Wie wär's damit:

Code:
DatePicker date; /* hast du schon */
TimePicker time; /* hast du schon */

GregorianCalendar cal = new GregorianCalendar(date.getYear(), date.getMonth(), date.getDayOfMonth(), time.getCurrentHour(), time.getCurrentMinute(), 0);
long timestamp = cal.getTime().getTime();
/* timestamp in DB schreiben */