【问题标题】:Retrieve data from a certain date in SQLite从 SQLite 中的某个日期检索数据
【发布时间】:2015-03-12 13:17:30
【问题描述】:

我在从我的 SQLite 数据库中检索某个月份的数据时遇到问题。我环顾四周,看到人们在 WHERE 子句中使用 strftime 并且我已经尝试过了,但我得到的结果好坏参半。无论日期如何,我要么获取数据库中的所有数据,要么没有得到任何结果,但没有出现错误或异常。我想知道是否有人可以解决这个问题?

在我的表中,我有一个名为“日期”的列,它是 TEXT(我的模型类中的字符串),我正在以 dd/MM/yyyy 的格式保存数据,但在阅读之后我认为它可能是格式我正在保存它,因为这是导致问题的原因,所以我也尝试使用 yyyy-MM-dd 和 dd-MM-yyyy,但它并没有解决问题。

我还尝试了不同的选择语句,看看是否有帮助。这将返回所有数据,而不仅仅是一月份的数据;

var selectStmt = "SELECT * FROM SleepTrackerModel WHERE strftime('%m', '01')";
SleepHistory = _dbHelper.Read<SleepTrackerModel>(selectStmt);

以下不返回数据;

var selectStmt = "SELECT * FROM SleepTrackerModel WHERE strftime('%m', 'Date') = '01'";
SleepHistory = _dbHelper.Read<SleepTrackerModel>(selectStmt);

我也尝试列出所有列名,而不是使用 *.除了我一直在使用的方式之外,我真的找不到任何帮助。 SleepHistory 是一个 ObservableCollection。我想要做的是当用户点击代表一年中每个月的按钮时,他们将看到该月的数据。

任何帮助都会很棒。谢谢。

【问题讨论】:

    标签: sql sqlite date windows-phone-8


    【解决方案1】:

    在 SQL 中,Date 是一个列名,而'Date' 只是一个字符串。

    strftime('%m', 'Date') 尝试将该字符串解释为日期值,但失败了。

    这样的 SQL 表达式检查一月份的日期:

    ... WHERE strftime('%m', Date) = '01'
    

    【讨论】:

    • 这似乎工作得很好,谢谢。我不能给你投票,但是一旦我获得了适当的声望,我一定会的。
    猜你喜欢
    • 2013-09-12
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 2012-11-03
    • 2020-04-10
    • 2019-07-22
    相关资源
    最近更新 更多