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();
}
3 Réponses :
Il existe 5 fonctions que SQLite fournit: p>
Pour plus d'informations, lisez le blog p>
https://medium.com/androïddevelopers/room-time-2B4CF9672B98 p>
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 () Donc, dans votre requête, vous devez comparer
Renvoie le nombre de millisecondes depuis le 1er janvier 1970, 00h00:00 GMT représenté par cet objet de date. P>
BlockQuote> 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);
Vous ne faites pas la même chose à comparer avec Pour comparer idérable et que vous voulez faire par date et pas de temps, vous pouvez utiliser P > autologin.expiration_date> date ('maintenant') "" "> expiration_date code> soit comme 1579550175468 strong> date ('maintenant') code> être comme @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')")