今天发现了一个诡异的情况:
首先是在记录中可以明显看到
update_time有null记录。
但用一下sql查询:
SELECT count(*) FROM risknoting WHERE noting_state='未标注' and update_time is NULL
得到结果却是0条。
但应该无论如何都要大于等于1条。
因此,我查询了这个字段的长度
SELECT length(update_time) FROM risknoting where id=438784
发现是19
因此这个NULL根本就不是正常的null值。
看了一下建表语句
`update_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新时间',
发现默认是’0000-00-00 00:00:00’
因此再用以下语句查询、发现生效了。
SELECT count(*) FROM risknoting WHERE noting_state='未标注' and update_time ='0000-00-00 00:00:00'
问题根本原因:SQL建表语句不规范、不应该用0000-00-00 00:00:00当作默认值。正确的建表语句参考:
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
`update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间'