1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Datensatz nach Datum / Uhrzeit sortieren?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von badkeks, 01.04.2011.

  1. badkeks, 01.04.2011 #1
    badkeks

    badkeks Threadstarter Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    18.03.2011
    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!
     
  2. swordi, 02.04.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    meistens speichert man das datum als timestamp und formatiert es dann wie man es braucht
     
  3. badkeks, 02.04.2011 #3
    badkeks

    badkeks Threadstarter Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    18.03.2011
    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..?!?
     
  4. funcoder, 02.04.2011 #4
    funcoder

    funcoder Erfahrener Benutzer

    Beiträge:
    218
    Erhaltene Danke:
    38
    Registriert seit:
    15.08.2009
    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. :)
     
  5. badkeks, 07.04.2011 #5
    badkeks

    badkeks Threadstarter Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    18.03.2011
    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?
     
  6. maniac103, 07.04.2011 #6
    maniac103

    maniac103 Android-Lexikon

    Beiträge:
    1,237
    Erhaltene Danke:
    1,157
    Registriert seit:
    24.01.2011
    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 ;)
     
  7. badkeks, 07.04.2011 #7
    badkeks

    badkeks Threadstarter Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    18.03.2011

    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
     
  8. DieGoldeneMitte, 07.04.2011 #8
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    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: 07.04.2011
  9. maniac103, 07.04.2011 #9
    maniac103

    maniac103 Android-Lexikon

    Beiträge:
    1,237
    Erhaltene Danke:
    1,157
    Registriert seit:
    24.01.2011
    Genau das ist ja das Problem ... Timestamp speichert beides in einem.

    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 */
    
     

Diese Seite empfehlen