У меня есть поле datetime. Если пользователь в форме вводит только дату, время, конечно же, будет установлено как 00:00:00, так оно и должно быть.

Но в mysql мне нужно сравнить это поле с now() или с curdate(). Если время установлено и не равно 00:00:00, мне нужно сравнивать только даты, если время является другим значением, мне нужно сравнить его с now().

Например, если я использую в mysql date>=now(), а пользователь устанавливает только дату, например 2013/12/22, тогда сравнение будет ложным на 12/22, что мне не нужно. Я бы хотел, чтобы это сравнение было ложным 12/23, тогда введенная дата все еще действительна на ту же дату.

Теперь, если использовать date>=curdate(), то время будет игнорироваться, если кто-то установил время.

Одно из решений - проверить, равно ли время 00:00:00, а затем каким-то образом изменить его на 23:59:59 для сравнения.

Итак, суть в том, что если в поле datetime указано 00:00:00, значит, пользователь явно установил только дату, поэтому мне нужно сравнить дату с curdate(). Если время установлено на любое другое значение, мне нужно сравнить дату с now().

Это выполнимо?

0
Jerry2 22 Дек 2013 в 13:14

1 ответ

Лучший ответ

Я бы попробовал это условие:

dt >= now()
OR 
( 
  time( dt ) = '00:00:00'
  AND 
  dt >= date( now() ) 
);

dt >= now() ==> проверяет, больше ли datetime dt, чем now ().
time( dt ) = '00:00:00' ==> проверяет, равна ли временная часть 00:00:00
date( now() ) ==> обрезает часть времени из now(), оставляет только часть даты.

См. Демонстрацию ==> http://www.sqlfiddle.com/#!2/8609c / 6

1
krokodilko 22 Дек 2013 в 15:59