【问题标题】: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

标签: sql mongodb sqlite


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    相关资源
    最近更新 更多