如何选择大于指定日期(上次请求日期)的数据,并且如果created_at和deleted_at都大于指定日期,则排除?
例如,last_requested_date是' 2017-03-09 15:41:00'。 然后,我想显示在2017-03-09 15:41:00'之后创建/更新/删除的国家/地区。但我不想显示已创建的国家/地区,然后在last_requested_date后删除(示例created_at' 2017-03-09 15:41:01'以及deleted_at' 2017-03 -09 15:41:02')
我的代码就像:
SELECT * FROM countries
WHERE (created_at > '2017-03-09 15:41:00' OR
updated_at > '2017-03-09 15:41:00' OR
deleted_at > '2017-03-09 15:41:00') AND
NOT (created_at > '2017-03-09 15:41:00' AND deleted_at > '2017-03-09 15:41:00')
但输出不是我预期的。任何解决方案将不胜感激!谢谢
答案 0 :(得分:0)
SELECT * FROM countries
WHERE (created_at > '2017-03-09 15:41:00' OR
updated_at > '2017-03-09 15:41:00' OR
deleted_at > '2017-03-09 15:41:00') AND id NOT IN
(SELECT id FROM countries where created_at > '2017-03-09 15:41:00' AND deleted_at > '2017-03-09 15:41:00')
答案 1 :(得分:0)
检查这个。
SELECT * FROM countries
WHERE (created_at > '2017-03-09 15:41:00' OR
updated_at > '2017-03-09 15:41:00' OR
deleted_at > '2017-03-09 15:41:00') AND
datediff(SECOND,created_at, deleted_at) > 60
这里我们检查两个日期(created_at和deleted_at)之间的差异必须大于60秒,您可以根据需要进行编辑。
答案 2 :(得分:0)
如果我对你的要求不正确,那么你的查询非常接近产生欲望结果。您可能需要再添加一个条件来检查创建日期和删除日期之间的日期差异,以避免今天创建和删除的国家/地区。
<form method="post" action="">
...
</form>