Pregunta

Hi I am comparing two dates using mysql between function. My query looks like

select count(id) as total 
  from table 
 where user_id=111 
       and date_column BETWEEN DATE_SUB(NOW(), INTERVAL 1 DAY) 
                           and NOW()

In between part of this query it is BETWEEN upperdate and lowerdate. It is working fine. But I went to verify this function on mysql documentation https://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between . It says it should be

`BETWEEN LOWER AND UPPER`

Current I am doing in reverse and it is working fine but I just want to verify that is it rite and it will cause in problem in future and any hidden case.

¿Fue útil?

Solución

It is working. Because:

DATE_SUB(NOW(), INTERVAL 1 DAY) -- a day less than now is yesterday

is LOWER THAN

NOW() -- it is now, means today with current time

So comparison would be like

between yes'day and today

which is valid

Otros consejos

BETWEEN DATE_SUB(NOW(), INTERVAL 1 DAY) and NOW()

is in other words

BETWEEN yesterday AND today

So it is

BETWEEN lower AND upper

No wonder it's working :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top