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

MySQL - BETWEEN non selezionerà i risultati corretti

Vedi questo correlato domanda.

Come altri hanno già detto, il tuo problema principale non è la contabilizzazione del tempo. Alcune opzioni per gestirlo:

  1. Utilizzare una funzione per convertire DateTime in una data. Non consiglio questa opzione, poiché probabilmente renderà la funzione non modificabile .

  2. Espandi il tuo BETWEEN per includere esplicitamente l'ultimo momento della giornata:(nota:questo è l'ultimo valore possibile che MS SQL può memorizzare, non so se MySQL ha lo stesso valore)

    SELECT * FROM `punches` WHERE `date` 
    BETWEEN '08/20/11 00:00:00.000' AND '08/31/11 23:59:59.997'
    
  3. Usa un < per il valore superiore

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

In realtà penso che l'ultimo sia più facile, nella maggior parte delle situazioni.

Suppongo che tu possa fare altre cose, come cambiare il tipo di dati della colonna, ma ho supposto che tu sia interessato solo a cambiare la query.

** Dichiarazione di non responsabilità:sono un ragazzo MS SQL, non MySQL