gpt4 book ai didi

mysql - 查询一个时间段之间的时间段

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:29:53 25 4
gpt4 key购买 nike

我有一个 PHP 页面,它向用户显示一个日历,以便能够选择与将分配的项目相匹配的开始期间和结束期间。

但在我分配所选时间段内的用户之前,我需要查看数据库是否已经分配。

我有一个表,用于存储某些项目中资源的分配数据。您可以在下面查看表格和代码。

SELECT * FROM ALLOCATION 
WHERE dt_starting >= STR_TO_DATE('2013-09-02', '%Y-%m-%d')
AND dt_ending <= STR_TO_DATE('2013-09-06', '%Y-%m-%d')
AND id_res = 1;

id_alloc id_pro id_res dt_starting dt_ending
----------
1 1 1 2013-09-02 2013-09-06
2 2 1 2013-09-03 2013-09-04
----------

但是,当我尝试使用从 2013-09-05 到 2013-09-05 甚至从 2013-08-31 到 2013-09-03 的日期期间进行搜索时,我在所有字段中都收到 null。

抱歉,我没法在这里放图片,因为我的声望点数不多。

当然这是一个逻辑问题,但它让我发疯。

最佳答案

我认为你的逻辑是倒退的,如果你想要列值之间的常量:

SELECT *
FROM ALLOCATION
WHERE dt_starting <= STR_TO_DATE('2013-09-02', '%Y-%m-%d') AND
dt_ending >= STR_TO_DATE('2013-09-06', '%Y-%m-%d') AND
id_res = 1;

编辑:

如果您正在寻找时间段之间的重叠,那么逻辑是一个在另一个结束之前开始,并且第一个在第二个 neds 之后结束:

SELECT *
FROM ALLOCATION
WHERE dt_starting <= STR_TO_DATE('2013-09-06', '%Y-%m-%d') AND
dt_ending >= STR_TO_DATE('2013-09-02', '%Y-%m-%d') AND
id_res = 1;

关于mysql - 查询一个时间段之间的时间段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18675129/

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