【发布时间】: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。