从SQLite中的特定日期检索数据

时间:2015-03-12 13:17:30

标签: sql sqlite date windows-phone-8

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

在我的表中,我有一个名为" Date"这是TEXT(在我的Model类中的字符串),我以dd / MM / yyyy的格式保存数据,但在阅读后我认为这可能是我保存它的格式,因为它导致问题所以我尝试了yyyy-MM-dd和dd-MM-yyyy,但它并没有解决问题。

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

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。我尝试做的是当用户点击代表一年中每个月的按钮时,他们会看到该月的数据。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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