我有一个php / mysql事件列表,如果记录已过启动日期(field_1),并且没有未来的结束日期集( field_5 ),那么我就会陷入困境,只想自动删除一个记录,所以在删除它之前,field_5需要是空的。在mysql dbase上,开始日期字段和结束日期字段都设置为null。我可以使用下面的代码获得删除已失效事件的代码,但我不知道如何应用mysql逻辑/条件代码来检查终结日期(field_5)是否已设置或为空,因此,如果该字段设置为字符串日期,则防止删除。有人能告诉我吗?
$eventstart ="STR_TO_DATE(field_1, '%m/%d/%Y')";
$eventend ="STR_TO_DATE(field_5, '%m/%d/%Y')";
mysql_query("DELETE FROM events3 WHERE $eventstart < $date ") or die(mysql_error());发布于 2016-03-12 18:03:55
尝试添加检查field_5是否为NULL或等于空字符串的代码:
$eventstart ="STR_TO_DATE(field_1, '%m/%d/%Y')";
$eventend ="STR_TO_DATE(field_5, '%m/%d/%Y')";
mysql_query("DELETE FROM events3
WHERE $eventstart < $date AND
(field_5 IS NULL OR field_5 ='')"
) or die(mysql_error());如果需要删除已过期的开始日期和结束日期集(因此,field_1和field_5都超过当前日期并需要删除),那么我们可以使用以下代码:
$eventstart ="STR_TO_DATE(field_1, '%m/%d/%Y')";
$eventend ="STR_TO_DATE(field_5, '%m/%d/%Y')";
mysql_query("DELETE FROM events3
WHERE $eventstart < $date AND
(field_5 IS NULL OR field_5 ='' OR $eventend < $date)"
) or die(mysql_error());发布于 2016-03-12 18:04:03
我认为逻辑应编码为:
DELETE e FROM events3 e
WHERE field_1 <= NOW() AND field_5 is null;我认为在这个查询中不需要变量。
如果错误地将日期值存储为字符串,则需要str_to_date()。
DELETE e FROM events3 e
WHERE STR_TO_DATE(field_1, '%m/%d/%Y') <= NOW() AND field_5 is null;将日期存储为字符串是一种糟糕的做法。
https://stackoverflow.com/questions/35961278
复制相似问题