티스토리 뷰

Android

[Android] 파이어베이스 Timestamp

드듬칫 2019. 5. 5. 23:49

파이어베이스의 Timestamp는 연도는 1900년을 기준으로 누적된 값을 이용하고 월은 0 ~ 11의 값을 이용한다

 

따라서 Timestamp를 이용한 쿼리 작성은 연도에서 1900을 뺀 값을 이용해야 한다

public void searchData(int year, int month, int dayOfMonth) {
    db.collection("books")
            .whereLessThan("timestamp", new Timestamp(new Date(year - 1900, month, dayOfMonth + 1)))
            .whereGreaterThanOrEqualTo("timestamp", new Timestamp(new Date(year - 1900, month, dayOfMonth)))
            .get()
            .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                @Override
                public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                    for (DocumentSnapshot ds : queryDocumentSnapshots.getDocuments()) {
						// todo
                    }
                }
            });
}

위 코드는 함수의 인자로 들어간 날짜 하룻동안 해당하는 문서들을 얻어오는 쿼리이다

시간에 관계없이 그 하루에 해당하는 문서를 얻기 위한 쿼리는 dayOfMonth + 1 보다 작은 값들을 얻어오는 것으로 해결할 수 있다