gpt4 book ai didi

php - MySQL 查询多个日期范围检查不起作用

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

下面是我的数据和查询,

academic year start date - 2018-01-01
academic year end date - 2018-06-30

术语表

term_id    parent_id      start_date          end_date 
1 null 2018-01-01 2018-01-30
2 1 2018-01-01 2018-01-10
3 1 2018-01-11 2018-01-20
4 null 2018-02-01 2018-02-28
5 4 2018-02-01 2018-02-10
6 4 2018-02-11 2018-02-20

我想添加新学期,该学期不应在 term_id 1,2 的日期范围内,也不应在学年开始和结束日期的日期范围内。但在我的查询中它不起作用,下面是我的查询,

我已经输入了,它不应该从下面的查询中输入

start_date - 2018-02-11 
end_date - 2018-02-25

SELECT * from term
where parent_id=null
and start_date >= 2018-02-11
and end_date <= 2018-02-25
and start_date >= 2018-01-01(academic year start date)
and end_date <= 2018-06-30(academic year end date)

与输入子项相同它应该在父术语日期范围内,并且在同一父术语的所有子术语中都是唯一的。我已经进入了,不该进入的,

start_date - 2018-02-13
end_date -2018-02-18

我的查询如下,

SELECT * from term
where parent_id=4
and start_date >= 2018-02-13
and end_date <= 2018-02-18
and start_date >= 2018-02-01(parent term start date)
and end_date <= 2018-02-28(parent term end_date)
and start_date >= 2018-01-01(academic year start date)
and end_date <= 2018-06-30(academic year end date)

最佳答案

好的,所以我要问这个:您的列名称是 start_date 还是 start_time?

离开下面,因为仍然相关

日期在 SQL 语句中像字符串一样使用,因此您必须将它们用双引号 " 括起来。因此,您的查询应该如下所示:

SELECT * from term
where parent_id=4
and start_date >= "2018-02-13"
and end_date <= "2018-02-18"
and start_date >= "2018-02-01"
and end_date <= "2018-02-28"
and start_date >= "2018-01-01"
and end_date <= "2018-06-30"

但是,你的SQL语句非常复杂。您说的是 start_date 大于 2 月 13 日,并且它大于 2 月 1 日,并且它大于 1 月 1 日,结束日期也是如此。

你可以做的就是简单地说:

SELECT * FROM term
WHERE parent_id = 4
AND start_date >= "2018-01-01"
AND end_date <= "2018-06-30"

这将完成上述所有“AND”语句。

关于php - MySQL 查询多个日期范围检查不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49657456/

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