如何在两个日期之间搜索以下数据?

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:002019-09-27 23:59:59 【参考方案1】:

您不需要between。我认为这是您想要的逻辑:

where @from_date >= date(open_date) and
      @from_date < date(close_date, '+1 day')

【讨论】:

以上是关于如何在两个日期之间搜索以下数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在日期之间搜索?

如何搜索两个日期之间的记录。但表日期格式是 varchar

如果它在两个不同的日期之间,如何选择今天的日期[重复]

如何使用php在两个日期之间生成随机日期?

如何获取帐户在两个日期之间进行的转发列表?

如何获得两个日期之间的季度数字。在 2 和 1 之间 -> 2341