【问题标题】:Android SQLite Group By DayAndroid SQLite 按天分组
【发布时间】:2021-03-15 08:13:19
【问题描述】:

我正在尝试使用 sqlite 查询进行过滤,它返回 TEXT 格式的 startdatetime。

我尝试的查询是:-

SELECT StartDateTime, GROUP_CONCAT(Remark,',') AS Remarks 
FROM History 
GROUP BY strftime('%D', date(StartDateTime)) 
HAVING COUNT(*) > 0

这很好用,但它只返回一个值,它是最后一个准确的值,而不是在列表中给出多个值

有人知道如何按今天或按月过滤吗?

样本数据:

ID startDateTime remark
1 20210311173715854 test
2 20210312100958295 test2
3 20210312155019778 test3
4 20210315135920665 test4

目前,当我使用上述查询时,它返回 20210315135920665 和所有备注,而不考虑它来自哪一天..

我想要实现的是,当我执行查询时,我需要对正确的日期时间有正确的注释...

我期待的结果:

ID startDateTime remark
1 20210311173715854 test
2 20210312100958295 test2,test3
4 20210315135920665 test4

【问题讨论】:

  • 发布样本数据和预期结果以阐明您想要什么。
  • @forpas,我已经更新了问题,请看一下,谢谢
  • 关于正确日期时间的正确备注是什么?以表格格式发布您的预期结果。
  • @forpas,我再次更新了问题,当我运行查询时,我只想获得当天发生的值....我想要返回三个 startdatetime 和他们的评论的值。 ..
  • 您更新了问题但未发布预期结果。

标签: android sqlite android-studio


【解决方案1】:

您的日期格式为 YYYYMMDDhhmmsssss,因此您必须按前 8 个字符分组:

SELECT SUBSTR(StartDateTime, 1, 8) AS date, 
       GROUP_CONCAT(Remark) AS Remarks 
FROM History 
GROUP BY date 

如果您想要每天的第一个日期时间:

SELECT MIN(StartDateTime) AS firstdatetime, 
       GROUP_CONCAT(Remark) AS Remarks 
FROM History 
GROUP BY SUBSTR(StartDateTime, 1, 8)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    相关资源
    最近更新 更多