如何在两个日期之间搜索以下数据?
Posted
技术标签:
【中文标题】如何在两个日期之间搜索以下数据?【英文标题】:How to search data below way between two dates? 【发布时间】:2019-09-06 09:51:13 【问题描述】:有一个日历。从日历中选择日期后显示数据。数据库长这样,
ActivityId ActiveName SubClassificationNameSl OpenDate
1 home 100 20/09/2019 1:10:10 30/09/2019 2:02:20
2 garden 101 17/09/2019 1:10:10 25/09/2019 2:02:20
3 village 102 10/09/2019 1:10:10 21/09/2019 2:02:20
如果用户选择 27,我会这样转换日期,
fromData = 27/09/2019 0:00:00
toDate = 27/09/2019 23:59:59
当用户选择天,22,输出应该是,1,2
**当用户选择第 17 天时, 输出应该只有 2
当用户选择第 20 天时, 输出应该是,1,2,3
我试过了,
select ActivityId,count(*) as WoCount, max(ActivityName) as ActivityName,
max(SubClassificationNameSl) as SubClassificationNameSl
from DetailState
where ('27/09/2019 0:00:00' between OpenDate and CloseDate or
'27/09/2019 23:59:59' between OpenDate and CloseDate or
OpenDate between '27/09/2019 0:00:00' and '27/09/2019 23:59:59' or
CloseDate between '27/09/2019 0:00:00' and '27/09/2019 23:59:59'
)
group by ActivityId
以上代码仅显示第 27 条数据
如果用户选择 20, 数据只显示 1。 如果用户选择 17, 数据只显示2**
【问题讨论】:
首先,您需要一种可以有意义地比较和排序的日期字符串格式。 Sqlite 支持的date and time functions 是不错的选择——比如2019-09-27 00:00:00
或2019-09-27 23:59:59
。
【参考方案1】:
您不需要between
。我认为这是您想要的逻辑:
where @from_date >= date(open_date) and
@from_date < date(close_date, '+1 day')
【讨论】:
以上是关于如何在两个日期之间搜索以下数据?的主要内容,如果未能解决你的问题,请参考以下文章