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 :

Date insérer en long et requête SQL


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 23
    Par défaut Date insérer en long et requête SQL
    Bonjour tous le monde,

    J'ai un problème avec mes requêtes sql.
    J'ai une table ou des dates sont sauvegardées en long.
    ( date = Calendar.getInstance().getTimeInMillis(); )

    maintenant j'aimerai faire une requête pour récupérer tous les éléments de la base enregistrés aujourd'hui...
    Pour compliquer l'histoire je voudrais qu'aujourd'hui correspondent à "d'aujourd'hui midi à demain midi"
    Il faut donc que je fasse une méthode qui me renvois en long la date et l'heure d'aujourd'hui midi et demain midi.
    La je ne sais pas comment faire.

    Ensuite je voudrais utiliser ces 2 long dans la requête avec Between.
    Mais la aussi je sèche totalement..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Cursor c = bdd.query(
    TABLE_VERRE,
    new String[] {COL_ID_V, COL_DATE, COL_TYPE, COL_POINTS},
    COL_DATE +  .............     c'est la ou je sèche completement


    Quelqu'un a t'il une idée?

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Défini La date du jour puis ajoute lui une journée et tu aura ta limite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR,12);
    cal.set(Calendar.MINUTE,0);
    cal.set(Calendar.SECOND,0);
    cal.set(Calendar.MILLISECOND,0);
     
    Long today = cal.getTime();
     
    cal.add(Calendar.DAY_OF_YEAR, 1);
     
    Long tomorrow = cal.getTime();
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 23
    Par défaut
    Bonjour Grunk,
    merci c'est pas mal du tout ça pour commencer!
    (oui je suis un peu flemmard aujourd'hui...)

    pour la requête j'avais essayé un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    COL_DATE + " BETWEEN \"" + ici un long +" AND \""+ un autre long +"\"",
    Mais il me disait syntax error.
    Je crois qu'il faut l’écrire autrement.
    Tu as une idée?

  4. #4
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 23
    Par défaut
    Update...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Calendar cal = Calendar.getInstance();
    			cal.set(Calendar.HOUR,12);
    			cal.set(Calendar.MINUTE,0);
    			cal.set(Calendar.SECOND,0);
    			cal.set(Calendar.MILLISECOND,0);
     
    			long today = cal.getTimeInMillis() / 1000;
     
    			cal.add(Calendar.DAY_OF_YEAR, 1);
     
    			long tomorrow = cal.getTimeInMillis() / 1000;
    ça c'est bon

    pour la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    COL_DATE + " BETWEEN \"" + debut +" AND " + fin +"\"",
    je dois mal écrire la requête

    08-08 17:16:55.539: E/AndroidRuntime(6825): Caused by: android.database.sqlite.SQLiteException: near ""1375999200 AND 1376085600"": syntax error: , while compiling: SELECT _id, date, type, points FROM table_verre WHERE date BETWEEN "1375999200 AND 1376085600"

    il faut des doubles quote ou des simple quote?
    faut il séparer le AND?

    je verrai ça demain

    Mais merci si tu réponds d'ici là Grunk



    Bonne soirée

  5. #5
    Expert confirmé

    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
    Billets dans le blog
    3
    Par défaut
    Salut

    Je vois pas l'interêt du /1000 si tu stockes des millis, il faut conserver des millis....

    Pour la requête (en évitant au maximum les constructions "manuelles") à priori c'est simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private static final String SQL_FILTER_DATES = COL_DATE + ">? AND " + COL_DATE+"<?";
     
    ....
     
    long today = ...;
    long tomorrow = ...;
     
    database.query(.... SQL_FILTER_DATES, new String[] { Long.toString(today), Long.toString(tomorrow) } );

  6. #6
    Membre averti
    Inscrit en
    Avril 2013
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 23
    Par défaut
    Bonjour,

    Je me permets de Up ce sujet, car cela ne fonctionne toujours pas...

    Voici ma méthode qui me renvoie mes dates en long :
    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
    17
    18
    19
     
    public long[] dateDuJour(){
    			Calendar cal = Calendar.getInstance();
    			cal.set(Calendar.HOUR,12);
    			cal.set(Calendar.MINUTE,0);
    			cal.set(Calendar.SECOND,0);
    			cal.set(Calendar.MILLISECOND,0);
     
    			long today = cal.getTimeInMillis();
     
    			cal.add(Calendar.DAY_OF_YEAR, 1);
     
    			long tomorrow = cal.getTimeInMillis();
     
    			long [] tab = new long[2];
    			tab[0] = today;
    			tab[1] = tomorrow;
    			return tab;
    		}
    et les méthodes qui font la requete :
    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
    17
    18
    19
    20
    21
    22
     
    public Verre getVerreWithDate(long [] d){
    		long debut = d[0];
    		long fin = d[1];
    		Cursor c =bdd.query(false, SQL_FILTER_DATES, new String[] { Long.toString(debut), Long.toString(fin) }, null, null, null, null, null, null );
    		return cursorToVerre(c);
    	}
     
    		private Verre cursorToVerre(Cursor c){
     
    			if (c.getCount() == 0)
    				return null;
     
    			c.moveToFirst();
    			Verre v = new Verre();
    			v.setId(c.getInt(NUM_COL_ID_V));
    			v.setDate(c.getLong(NUM_COL_DATE));
    			v.setType(c.getString(NUM_COL_TYPE));
    			v.setPoints(c.getInt(NUM_COL_POINTS));
    			c.close();
    			return v;
    		}
    et voici le message d'erreur :

    08-19 15:18:54.437: E/AndroidRuntime(16621): Caused by: android.database.sqlite.SQLiteException: near ">": syntax error: , while compiling: SELECT 1376949600000, 1377036000000 FROM date >? AND date <?


    Je ne suis pas très calé en requete SQL si quelqu'un peu m'aider svp

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

Discussions similaires

  1. Date à insérer dans une requête sql
    Par raf64flo dans le forum SAS Base
    Réponses: 18
    Dernier message: 24/04/2008, 11h50
  2. Comment insérer la date actuelle dans une requête SQL ?
    Par AMINE07 dans le forum Bases de données
    Réponses: 7
    Dernier message: 15/11/2007, 16h47
  3. Requêtes SQL pour les Dates et numériques
    Par Ramage03 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/03/2006, 17h26
  4. [SQL2K] requête SQL, comparer des dates
    Par cortex024 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 16/03/2006, 14h32
  5. Requête sql regroupement de dates
    Par rocs dans le forum Langage SQL
    Réponses: 1
    Dernier message: 28/07/2005, 16h40

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