Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

561
Views
Firestore: no se puede hacer coincidir la medianoche con el filtro de fecha en la cláusula where()

Me di cuenta de que hay un comportamiento extraño cuando se usa una cláusula where() en un campo de Timestamp de tiempo en una query() . Estoy usando la versión modular 9 de Firebase.

Quizás alguien tenga una explicación para eso.

Aquí están los datos que veo en la consola de Firebase/Firestore:

ingrese la descripción de la imagen aquí

Suponiendo que hoy es el 27 de diciembre de 2021 , quiero consultar todos los documentos para este día; en este caso, solo el documento anterior.

Usaría la siguiente consulta (es decir, todo después de hoy a la medianoche y antes de mañana a la medianoche):

 const today = new Date(new Date().setHours(0,0,0)); const tomorrow = new Date(new Date(today).setDate(today.getDate() + 1)); const docQuery = query(collection(getFirestore(firebaseApp), 'ticks1'), where('date', '>=', today), where('date', '<', tomorrow) ) const querySnapshot = await getDocs(docQuery) console.log('documents count:', querySnapshot.docs.length)

Pero: ¡esto no devuelve resultados!

 documents count: 0

En cambio, si cambio el valor en la base de datos a 12:00:01 AM (ver más abajo), funciona y recupero el documento esperado.

ingrese la descripción de la imagen aquí

 documents count: 1

¿Alguien puede explicar este comportamiento, o es un error en la implementación de Firestore?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Solución alternativa que estoy usando en este momento

En lugar del rango [today 12:00:00 AM, tomorrow 12:00:00 AM) , estoy usando este rango de fechas ahora: (yesterday 11:59:59 PM, today 11:59:59 PM]

 const now = new Date() const dateFrom = new Date(new Date(new Date(now).setDate(now.getDate() - 1)).setHours(23,59,59)) const dateTo = new Date(new Date(dateFrom).setDate(dateFrom.getDate() + 1)); const docQuery = query(collection(getFirestore(firebaseApp), 'ticks1'), where('date', '>', dateFrom), where('date', '<=', dateTo) ) const querySnapshot = await getDocs(docQuery) console.log('documents count:', querySnapshot.docs.length)
 documents count: 1

Al menos esto tiene sentido, aunque parezca un poco extraño.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!