Don't use `BETWEEN` for checking a date or datetime range; it is _inclusive_, so you get the second (usually midnight) at both ends.

For checking DATE or DATETIME against one "day", do this:

    WHERE col >= '2019-12-19'
      AND col  < '2019-12-19' + INTERVAL 1 DAY

That will work 'correctly' whether `col` is a DATE, DATETIME, or DATETIME(6).  And the Optimizer is generally happy with that expression.

Also, keep in mind that `CURDATE()` is midnight of this morning.