Mysql запрос WHERE предложение не работает. ГДЕ useDate <> CURDATE () - PullRequest
0 голосов
/ 11 сентября 2018

useDate тип даты и NULL.Запрос ниже не работает

UPDATE licenses 
     SET useDate = CURDATE() 
WHERE license = 'ABC123' AND useDate <> CURDATE();

Ответы [ 5 ]

0 голосов
/ 11 сентября 2018

Этот запрос работал у меня;)

UPDATE licenses 
SET useDate = CURDATE() 
WHERE license = 'ABC123' AND (useDate IS NULL OR useDate <> CURDATE());
0 голосов
/ 11 сентября 2018

SQL 101: NULL не равно ничему. Точно так же, NULL не равно-ничему. Используйте IS NULL в таких ситуациях:

UPDATE licenses
SET useDate = CURDATE()
WHERE license = 'ABC123' AND (useDate IS NULL OR useDate <> CURDATE());
0 голосов
/ 11 сентября 2018

может быть, у вас есть datetime для использованияDate

    UPDATE licenses 
         SET useDate = CURDATE() 
    WHERE license = 'ABC123' AND date(useDate) != CURDATE();

так что вам нужно сравнить часть даты

0 голосов
/ 11 сентября 2018

Ваша проблема в предложении where - значения NULL не совпадают <> или =.Вы можете сделать:

UPDATE licenses 
     SET useDate = CURDATE() 
WHERE license = 'ABC123' AND
      (useDate <> CURDATE() or useDate IS NULL);

Или использовать безопасное для NULL сравнение MySQL:

UPDATE licenses 
     SET useDate = CURDATE() 
WHERE license = 'ABC123' AND
      NOT (useDate <=> CURDATE());
0 голосов
/ 11 сентября 2018

конвертировать date и использовать Trim в столбце лицензий в случае пустого пространства

UPDATE licenses 
         SET useDate = date(now())
    WHERE Trim(license) = 'ABC123' AND date(useDate)!= date(now());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...