gpt4 book ai didi

mysql - 使用 MYSQL/SQL 在两个日期之间搜索?

转载 作者:行者123 更新时间:2023-11-29 03:25:37 25 4
gpt4 key购买 nike

我有一张 table 是clientbike

SELECT stime,etime FROM clientbike

    stime       |  etime 
--------------------------
2016-04-01 | 2016-04-30

如果有人搜索 stime = 2016-04-05 & etime = 2016-04-07

找到结果

    2 Days... 

有人可以解释如何使用 sql/mysql 吗?

谢谢

最佳答案

如果我理解正确,您需要的是重叠天数,EndDate 是唯一的。如果那是正确的,那么从这个开始:

SELECT *
FROM clientbike
WHERE stime <= @ToDate
AND etime >= @FromDate;

此查询将返回 clientbike 中与搜索日期重叠的任何记录。以这种方式构造 WHERE 子句检查开始悬垂、结束悬垂、@ToDate@FromDatesdateedatesdateedate 介于 @ToDate@FromDate 之间。

接下来我们需要修改SELECT:

SELECT GREATEST(stime, @FromDate) AS startDate,
LEAST(etime, @ToDate) AS endDate
FROM clientbike
WHERE stime <= @ToDate
AND etime >= @FromDate;

GREATESTLEAST 的要点是确保我们只查看实际重叠的日期。例如:如果 stime = '2016-04-15'@FromDate = '2016-04-22',则 GREATEST(stime, @FromDate) = '2016-04-22'。然后我们将使用这两个字段来计算 startDateendDate 之间的日期差异:

SELECT GREATEST(stime, @FromDate) AS startDate,
LEAST(etime, @ToDate) AS endDate,
DATEDIFF(LEAST(etime, @ToDate), GREATEST(stime, @FromDate)) as overlap
FROM clientbike
WHERE stime <= @ToDate
AND etime >= @FromDate;

SELECT 中唯一重要的部分是 DATEDIFF() 函数,因此可以删除前面的两个字段。我只是把它们留在里面,这样你就可以看到发生了什么。

关于mysql - 使用 MYSQL/SQL 在两个日期之间搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36674953/

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