0
votes

Requête avec comparaison de date à Android avec la chambre

Je veux interroger mon dB avec une comparaison de date avec la date actuelle.

Voici ma requête: P>

    @androidx.room.TypeConverter
    public static Date toDate(Long value) {
        return value == null ? null : new Date(value);
    }

    @androidx.room.TypeConverter
    public static Long toLong(Date value) {
        return value == null ? null : value.getTime();
    }


0 commentaires

3 Réponses :


0
votes

Il existe 5 fonctions que SQLite fournit:

  1. date (...) retourne juste la date.
  2. temps (...) retourne juste l'heure.
  3. datetime (...) retourne à la fois la date et l'heure.
  4. Julianday (...) retourne la Journée Julienne.
  5. StrfTime (...) retourne une valeur formatée avec votre format donné chaîne. Les quatre premiers peuvent être considérés comme des variations de la filature avec un format prédéfini.

    Pour plus d'informations, lisez le blog

    https://medium.com/androïddevelopers/room-time-2B4CF9672B98


0 commentaires

0
votes

Depuis que vous avez utilisé date.gettime () a > Méthode dans votre classe Code> Classe Code> Classe, la valeur stockée dans dB sera Unix Time .

Long Gettime ()


Renvoie le nombre de millisecondes depuis le 1er janvier 1970, 00h00:00 GMT représenté par cet objet de date. P> BlockQuote>

Donc, dans votre requête, vous devez comparer expiration_date code> Valeur de la colonne avec le temps actuel Unix. Basé sur Site officiel SQLITE , vous pouvez obtenir une heure actuelle Unix par StrfTime ('% s ',' maintenant ') code> expression. Votre requête doit être comme ci-dessous: P>

@Query("SELECT * FROM User INNER JOIN AutoLogin ON User.user_Id = AutoLogin.user_Id AND AutoLogin.token_Id = :autoLoginToken AND Autologin.expiration_date > (strftime('%s', 'now') * 1000)")
Single<User> getUserByAutoLogin(String autoLoginToken);


0 commentaires

1
votes

Vous ne faites pas la même chose à comparer avec autologin.expiration_date> date ('maintenant') "" ">

expiration_date code> soit comme 1579550175468 strong> date ('maintenant') code> être comme 2020-01-20 strong> p>

Pour comparer idérable et que vous voulez faire par date et pas de temps, vous pouvez utiliser P >

@Query("SELECT * FROM User INNER JOIN AutoLogin ON User.user_Id = AutoLogin.user_Id AND AutoLogin.token_Id = :autoLoginToken AND Autologin.expiration_date > strftime('%s', 'now')")


0 commentaires