获取开始日期和结束日期之间的数据
我得到的数据,但我的要求是有点不同,请检查下面的数据库
我有两个文本框
1) start date
2) end date
数据库是这样的
table name->purchase_order
sno start_date end_date
1 2017/08/01 2017/12/01
2 2017/08/01 2017/11/30
3 2017/09/01 2017/09/30
4 2017/09/01 2017/10/30
5 2017/10/01 2017/11/30
我正在努力
select *
from purchase_order
where start_date>= '2017/09/01' and start_date<= '2017/09/01'
OR end_date>= '2017/09/01' and end_date<= '2017/09/01'
正在获取的输出
sno start_date end_date
3 2017/09/01 2017/09/30
4 2017/09/01 2017/10/30
我的要求
如果我在2017/09/01 - 2017/09/30之间选择,我想这样做{在ID“1”中,在第8个月到第12个月之间,有第9个月在那里,所以它也必须来}
sno start_date end_date
1 2017/08/01 2017/12/01
2 2017/08/01 2017/11/30
3 2017/09/01 2017/09/30
4 2017/09/01 2017/10/30
谢谢
2条答案
按热度按时间gg58donl1#
您不需要检查列值是否在您的日期之间,而是希望查看日期是否在列值之间。使用
BETWEEN
使逻辑看起来更清晰:如果选择
2017/09/01 - 2017/09/30
,请执行以下操作:AND
将确保两个日期都在start_date和end_date之间,OR
将确保至少有一个日期在列之间。hgtggwj02#
你不想像你的问题中那样有4个从句,你只想有2个从句。
逻辑应如下:
1.应用程序中输入的开始日期晚于或等于表中开始列中的开始日期
1.应用程序中输入的结束日期早于或等于
应用程序。
基于此逻辑,您应该能够使用以下查询:
有人可能会抱怨我的逻辑中有一个漏洞,因为我没有检查结束日期是否晚于开始日期,尽管你希望在应用程序级别上这样做,因此它与提出这个问题的数据库级别无关。