【问题标题】:Sqlite query to fetch rows for particular daySqlite 查询以获取特定日期的行
【发布时间】:2015-09-22 13:30:50
【问题描述】:

我想使用 SQLITE DB 获取选定日期的结果,并从 uidatepicker 获取日期并传递给 fetch results 方法。

我的 sqlite 查询如下,

SELECT * FROM TRANSACTIONSHISTORY WHERE DATE > "21-09-2014 12:00:00" AND DATE < "22-09-2014 00:00:00"

但是因为我在 2015 年也有结果,请帮助我摆脱这个问题。

【问题讨论】:

  • 如果您更新您的问题,详细说明如何在架构中定义 DATE 列,以及显示如何在列中存储日期值,这将有所帮助。

标签: ios objective-c sqlite


【解决方案1】:

您的日期格式不正确,如果您查看文档 (http://www.sqlite.org/lang_datefunc.html),您会发现:

时间字符串可以是以下任何一种格式:

YYYY-MM-DD

YYYY-MM-DD HH:MM

YYYY-MM-DD HH:MM:SS

YYYY-MM-DD HH:MM:SS.SSS

YYYY-MM-DDTHH:MM

YYYY-MM-DDTHH:MM:SS

YYYY-MM-DDTHH:MM:SS.SSS

HH:MM

HH:MM:SS

HH:MM:SS.SSS

现在

DDDDDDDDDD

如果您将日期设为其中一种格式并运行查询,它将起作用:

SELECT * FROM TRANSACTIONSHISTORY WHERE date BETWEEN '2014-09-21' AND '2014-09-22'

【讨论】:

  • 实际上 SQLite 不解释日期:它只是进行字符串比较。这就是为什么格式 'YYYY-MM-DD HH:MM:SS.SSS' 非常重要的原因:字典顺序或符合此格式的字符串与“自然”日期顺序相同。相反,“DD-MM-YYYY HH:MM:SS”格式不会按字典顺序对日期进行排序,这就是为什么必须不惜一切代价避免它。
  • 我通过自定义查询解决了这个问题,例如搜索 00:00:00 到 23:59:59 之间的日期相同的日期
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 2018-06-27
  • 2014-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多