useDate
is date type and is NULL
. The query below doesn't work
UPDATE licenses
SET useDate = CURDATE()
WHERE license = 'ABC123' AND useDate <> CURDATE();
Your problem is the where
clause -- NULL
values don't match <>
or =
. You can do:
UPDATE licenses
SET useDate = CURDATE()
WHERE license = 'ABC123' AND
(useDate <> CURDATE() or useDate IS NULL);
Or use MySQL's NULL-safe comparison:
UPDATE licenses
SET useDate = CURDATE()
WHERE license = 'ABC123' AND
NOT (useDate <=> CURDATE());
SQL 101: NULL
is not equal to anything. Likewise, NULL
is not not-equal to anything. Use IS NULL
in such situations:
UPDATE licenses
SET useDate = CURDATE()
WHERE license = 'ABC123' AND (useDate IS NULL OR useDate <> CURDATE());
convert date
and use Trim
on license column in case of any blank space
UPDATE licenses
SET useDate = date(now())
WHERE Trim(license) = 'ABC123' AND date(useDate)!= date(now());
could be you have a datetime for useDate
UPDATE licenses
SET useDate = CURDATE()
WHERE license = 'ABC123' AND date(useDate) != CURDATE();
so you need to compare the date part
That request worked for me ;)
UPDATE licenses
SET useDate = CURDATE()
WHERE license = 'ABC123' AND (useDate IS NULL OR useDate <> CURDATE());
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.