• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Pruebas Online
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

584
Vistas
¿Cómo arreglar MYSQL entre fechas que no dan resultados precisos?

ingrese la descripción de la imagen aquí

 SELECT IF ( SUM( t.debit )>= SUM( t.credit ), SUM( t.debit ) - SUM( t.credit ), SUM( t.credit ) - SUM( t.debit )) AS Balance, IF(SUM( t.debit )>= SUM( t.credit ) ,"Profit", "Loss") AS status FROM transactions AS t WHERE t.userId = 1 AND t.dateIssued BETWEEN '2021-07-09' AND '2021-07-10';

Esperaba dar 6000 como salida porque el intervalo debería incluir la fecha.

ingrese la descripción de la imagen aquí

about 3 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

dateIssued no es una Date , es un DateTime / timestamp .
Entonces, cuando compara su valor 2021-07-10 13:11:12 con fechas como '2021-07-09' y '2021-07-10' la comparación se interpreta como:

 '2021-07-10 13:11:12' BETWEEN '2021-07-09 00:00:00' AND '2021-07-10 00:00:00'

que devuelve false .

Convierta dateIssued to Date con la función Date() y luego compare:

 WHERE t.userId = 1 AND DATE(t.dateIssued) BETWEEN '2021-07-09' AND '2021-07-10';

Para un mejor rendimiento, debería considerar escribir las condiciones sin BETWEEN y la función Date() :

 WHERE t.userId = 1 AND t.dateIssued >= '2021-07-09' AND t.dateIssued < '2021-07-11';
about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda