IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Comparaison de date courante et date d'une base SQLite sous Android


Sujet :

Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 13
    Points
    13
    Par défaut Comparaison de date courante et date d'une base SQLite sous Android
    Bonjour,

    Je me tourne vers vous car je me retrouve confronté à une subtilité que je n'arrive pas à intégrer..
    J'ai dans une base de donnés SQLite un champ COL_MOM_MESSAGE qui est de type TIMESTAMP DEFAULT CURRENT_TIMESTAMP. J'aimerais fournir à l'utilisateur la possibilité d'afficher des messages inférieurs à un certain moment, par exemple afficher les messages d'il y a moins d'une heure, deux..
    J'ai un peu cherché sur le net et pour les ajouts, soustractions pour les dates il faut passer par Calendar. Je comprends pas par contre comment faire la requête pour afficher les messages.
    Pour l'instant mon code ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    public Cursor getMessages1Heure(){
     
            Calendar calendar = Calendar.getInstance();
            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh':'mm':'ss");
            calendar.add(Calendar.HOUR, -1);
     
            String heurePrecedente = dateFormat.format(calendar.getTime());
     
            String where = Je sais pas quoi mettre ici! x) 
     
            Cursor c = db.query(true, TABLE_ALERTE, ALL_KEYS, where, null, null, null,null, null);
            if(c!=null){
                c.moveToFirst();
            }
            return c;
        }
    Comme écrit dans le code je sèche sur la partie requête.
    Si quelqu'un a une idée je suis preneur !

    Simon

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Perso pour les dates dans SQLite, je préfère utiliser les "long", avec la même définition que java (ms ellapsed since 1 jan 1970 00:00:00)

    La lecture est simple: new Date(getLong())
    La comparaison en DB est simple
    L'écriture est simple: date.getTime()
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Mon problème c'est que mon champ COL_MOM_MESSAGE est de type text. Est ce qu'il y a moyen de récupérer un datetime en SQLite sous la forme d'un int ?
    Ce serait plus simple pour les comparaisons mais je n'ai rien trouvé de ce côté là, c'est pour ça que je me suis tourné vers ici !
    Sinon dans la requête, si j'avais deux datetime à comparer je saurais me débrouiller !

    Pour ce qui est de ma requête de création de ma BdD c'est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     private static final String CREATE_DATABASE = " CREATE TABLE " + TABLE_ALERTE + "( " +_ID
                + " INTEGER PRIMARY KEY AUTOINCREMENT, "+COL_NB_CHAMPS+ " BIGINT, "
                + COL_ID_CLIENT+ " TEXT, " +COL_MOM_ALERTE+ " DATETIME, "
                + COL_MOM_MESSAGE + "   DEFAULT(STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')) , "
                + COL_NIV_ALERTE+" INTEGER, "+COL_OBJ_ALERTE+ " TEXT, " + COL_CHAMP1 + " TEXT, " + COL_CHAMP2
                +" TEXT, " + COL_CHAMP3+" TEXT , " + COL_LIEN + " TEXT);";
    Je sais pas ce qu'il faut mettre comme parametres pour que le champ COL_MOM_MESSAGE s'enregistre à chaque entrée sous forme d'un int.

    Toutes les réponses et conseils sont les bienvenus !

    Simon

  4. #4
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Il n'y a que 4 types dans SQLite:

    https://www.sqlite.org/datatype3.html

    INTEGER
    REAL
    TEXT
    et
    BLOB


    tous les autres types sont convertis dans l'une des 4 ci-dessus

    Donc personnellement, je préfère créer ma base en disant:
    colonne_de_date est de type INTEGER

    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [LibreOffice][Base de données] Se connecter à une base Sqlite (sous Linux)
    Par joreveur dans le forum OpenOffice & LibreOffice
    Réponses: 12
    Dernier message: 17/12/2016, 23h41
  2. Insertion dans une base SQLite sous Android
    Par ensinienne dans le forum Android
    Réponses: 1
    Dernier message: 03/04/2012, 09h19
  3. compacter une base sqlite sous lazarus et linux
    Par ovni76 dans le forum SQLite
    Réponses: 3
    Dernier message: 23/01/2011, 07h38
  4. Date du dernier dump d'une base
    Par A Cherry Tells dans le forum Sybase
    Réponses: 3
    Dernier message: 13/04/2010, 19h36
  5. Dates relatives à la date courante
    Par bros_70 dans le forum Langage
    Réponses: 5
    Dernier message: 09/03/2007, 19h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo