gpt4 book ai didi

MySQL:根据日期获取当前和下一条记录

转载 作者:行者123 更新时间:2023-11-30 22:13:28 25 4
gpt4 key购买 nike

我有这张表:

+----+-----------+------------+------------+-----------+
| 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com