sql >> Database teknologi >  >> RDS >> Mysql

MySQL - BETWEEN vil ikke vælge korrekte resultater

Se dette relaterede spørgsmål.

Som andre har nævnt, er dit primære problem ikke at tage højde for tiden. Et par muligheder for at håndtere det:

  1. Brug en funktion til at konvertere DateTime til en Dato. Jeg anbefaler ikke denne mulighed, da den sandsynligvis vil gøre funktionen ikke-sargebar .

  2. Udvid din BETWEEN for eksplicit at inkludere dagens sidste øjeblik:(bemærk:dette er den seneste mulige værdi, som MS SQL kan gemme, ved ikke om MySQL har samme værdi)

    SELECT * FROM `punches` WHERE `date` 
    BETWEEN '08/20/11 00:00:00.000' AND '08/31/11 23:59:59.997'
    
  3. Brug en < for den øvre værdi

    SELECT * FROM `punches` WHERE `date` >= '08/20/11' AND `date` < '09/01/11'
    

Jeg tror faktisk, at den sidste er nemmere i de fleste situationer.

Jeg formoder, at du kunne gøre andre ting, såsom at ændre kolonnens datatype, men jeg har her antaget, at du bare er interesseret i at ændre forespørgslen.

** Ansvarsfraskrivelse:Jeg er en MS SQL-mand, ikke MySQL



  1. Indsættelse af flere værdier i en MySQL på én gang

  2. VMware CPU Hot Plug vNUMA Effekter på SQL Server

  3. Hvordan bestemmer jeg den sidste dag i den foregående måned ved hjælp af PostgreSQL?

  4. Sådan fungerer SHOW COLLATION i MariaDB