MySQL查询WHERE子句不起作用。在useDate <> CURDATE()

时间:2018-09-11 11:47:10

标签: mysql sql date

awk 'BEGIN {FS=OFS="\t"} {i=$1FS$2} {a[i]=!a[i]?$3:a[i]FS"1\n" i"\t"$3FS"1"} END {for (l in a) {print l,a[l]}}' infile > outfile 是日期类型,并且是d 205 exp_a 1 d 205 exp_b 1 a 123 exp_a 1 a 123 ref 1 b 146 exp_a c 156 ref 。 下面的查询不起作用

useDate

5 个答案:

答案 0 :(得分:3)

您的问题是where子句-NULL的值与<>=不匹配。您可以这样做:

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

或使用MySQL的NULL安全比较:

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

答案 1 :(得分:3)

SQL 101:NULL不等于任何值。同样,NULL不等于任何东西。在以下情况下使用IS NULL

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

答案 2 :(得分:1)

转换date并在许可证列上使用Trim,以防出现空白

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

答案 3 :(得分:0)

您可能有useDate的日期时间

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

所以您需要比较日期部分

答案 4 :(得分:0)

该请求对我有用;)

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