我有这张表:
+----+-----------+------------+------------+-----------+
| id | name | date_start | date_end | is_active |
+----+-----------+------------+------------+-----------+
| 12 | Invernale | 2016-11-01 | 2017-03-31 | 1 |
| 15 | Estivo | 2016-09-01 | 2016-09-01 | 1 |
+----+-----------+------------+------------+-----------+
我需要获取基于今天的“当前”记录和基于今天的下一条记录。
在我的示例中,“current”是 id 15,“next”是 12。
今天,相同的查询将为当前返回“NULL”(或没有记录),为下一个返回 15。
2016年11月1日,当前为12,下一个没有记录。
2017年4月1日,两者都需要返回无记录。
这些是我的查询,但都将返回 id 15(今天)。
$sql_current = "SELECT * FROM $table WHERE date_start <= '$now' AND date_end >= '$now'";
$sql_next = "SELECT * FROM $table WHERE date_start >= '$now' ORDER BY date_start ASC LIMIT 1";
非常感谢
最佳答案
我猜你可以在 UNION
的帮助下在单个查询中获得这两条记录(如果有的话)(如果我没有误解的话)
(
SELECT
*
FROM tableName
WHERE CURDATE() BETWEEN date_start AND date_end
LIMIT 1
)
UNION
(
SELECT
*
FROM tableName
WHERE date_start > CURDATE()
ORDER BY date_start
LIMIT 1
);
编辑:
如果您想知道哪个条目是current
,哪个是next
,那么您可以添加一个额外的列currentOrNext
,如下所示:
(
SELECT
*,
'current' AS currentOrNext
FROM tableName
WHERE CURDATE() BETWEEN date_start AND date_end
LIMIT 1
)
UNION
(
SELECT
*,
'next' AS currentOrNext
FROM tableName
WHERE date_start > CURDATE()
ORDER BY date_start
LIMIT 1
)
关于MySQL:根据日期获取当前和下一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39264431/