我在根据某个月从我的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。我尝试做的是当用户点击代表一年中每个月的按钮时,他们会看到该月的数据。
任何帮助都会很棒。感谢。
答案 0 :(得分:1)
在SQL中,Date
是列名,而'Date'
只是一个字符串。
strftime('%m', 'Date')
尝试将该字符串解释为日期值,但失败了。
像这样的SQL表达式检查1月份的日期:
... WHERE strftime('%m', Date) = '01'