Search code examples
firebasedartgoogle-cloud-firestoreflutter

How to fetch records by comparing with date in flutter cloud firestore plugin?


Working on a flutter application where I'm using firebase cloud firestore for storing all my documents. My document has a startDateTime field having a format like this...

enter image description here

I want to fetch all records whose startDateTime is greater than or equal to current date. Here is my flutter code to do this...

Firestore.instance.collection("trips")
    .where("trip.createdByUID", isEqualTo: this.userDetails['id'])
    .where("trip.startDateTime", isGreaterThanOrEqualTo: new DateTime.now().toString() )
    .getDocuments().then((string) {
        print('Firestore response111: , ${string.documents.length}');

        string.documents.forEach((doc) => print("Firestore response222: ${doc.data.toString()}" ));
    })

But this is not working. Can't able to understand how to use isGreaterThanOrEqualTo so that it'll work.

Need some guidance.


Solution

  • Pass just this query

    .where("trip.startDateTime", isGreaterThanOrEqualTo: new DateTime.now())

    Since firebase automatically converts dart DateTime object to Timestamp Firebase object. You also need to do the same when you save the object.

    enter image description here

    You can see on the right if the object type is timestamp.

    In case this doesn't work, you can save another object on your creation in numeric format. Then it is easy to compare. You can get numeric dateTime like this:

    new DateTime.now().millisecondsSinceEpoch