Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL - BETWEEN não selecionará resultados corretos


Consulte este relacionado pergunta.

Como outros já mencionaram, seu principal problema não é contabilizar o tempo. Algumas opções para lidar com isso:

  1. Use uma função para converter o DateTime em uma data. Não recomendo esta opção, pois provavelmente tornará a função não sargável .

  2. Expanda seu BETWEEN para incluir explicitamente o último momento do dia:(nota:este é o último valor possível que o MS SQL pode armazenar, não sei se o MySQL tem o mesmo valor)
    SELECT * FROM `punches` WHERE `date` 
    BETWEEN '08/20/11 00:00:00.000' AND '08/31/11 23:59:59.997'
    

  3. Use um < para o valor superior
    SELECT * FROM `punches` WHERE `date` >= '08/20/11' AND `date` < '09/01/11'
    

Eu realmente acho que o último é mais fácil, na maioria das situações.

Suponho que você possa fazer outras coisas, como alterar o tipo de dados da coluna, mas presumi aqui que você está interessado apenas em alterar a consulta.

** Isenção de responsabilidade:sou um cara do MS SQL, não do MySQL