假设表名:bb,日期字段为:dd
mysql>delete from bb where (month(dd)<=0 || month(dd)>12);
其他类似,可用day(dd)<=0 || day(dd)>31作日的判断,另外具体情况可以自己添加.
mysql>delete from bb where (month(dd)<=0 || month(dd)>12);
其他类似,可用day(dd)<=0 || day(dd)>31作日的判断,另外具体情况可以自己添加.
分别对两种结果进行处理,
一种 结果是 NULL, 一种结果是数据SET @dt = '2002-2-31';
SELECT DATE_FORMAT(@dt,'%Y-%m-%d')
, FROM_DAYS(TO_DAYS(@dt))
, DATE_FORMAT(@dt,'%Y-%m-%d') = FROM_DAYS(TO_DAYS(@dt));
SET @dt = '2002-00-31';
SELECT DATE_FORMAT(@dt,'%Y-%m-%d')
, FROM_DAYS(TO_DAYS(@dt))
, DATE_FORMAT(@dt,'%Y-%m-%d') = FROM_DAYS(TO_DAYS(@dt));-- 所以下面的 WHERE 字句就是你要的结果SELECT User FROM mysql.user WHERE TO_DAYS(@dt) IS NULL OR (DATE_FORMAT(@dt,'%Y-%m-%d') <> FROM_DAYS(TO_DAYS(@dt)));