Android 无法从日期到日期的SQLite获取数据
我在android中有一个SQLite数据库,我想从表中选择从date1到date2的仅事务数据 代码: 查询结果:Android 无法从日期到日期的SQLite获取数据,android,sql,sqlite,date,Android,Sql,Sqlite,Date,我在android中有一个SQLite数据库,我想从表中选择从date1到date2的仅事务数据 代码: 查询结果: Execution finished without errors. Result: 0 rows returned in 13ms 更新:以下是我如何将数据更改为年-月-日格式: val c = Calendar.getInstance() val year = c.get(Calendar.YEAR) val month = c.get(Calendar.M
Execution finished without errors.
Result: 0 rows returned in 13ms
更新:以下是我如何将数据更改为年-月-日格式:
val c = Calendar.getInstance()
val year = c.get(Calendar.YEAR)
val month = c.get(Calendar.MONTH)
val day = c.get(Calendar.DAY_OF_MONTH)
val correctMonthDefault = month+1
if(day<10 && correctMonthDefault>9){
tv_add_date.setText("" + year + "-" + correctMonthDefault +"-"+ "0"+ day )}
else if(correctMonthDefault<10 && day>9)
{
tv_add_date.setText("" + year + "-0" + correctMonthDefault +"-"+ "0"+ day )}
else if(day<10 && correctMonthDefault<10){
tv_add_date.setText("" + year + "-0" + correctMonthDefault +"-0" + day )}
else {
tv_add_date.setText("" + year + "-" + correctMonthDefault +"-" + day )}
btnCalendar.setOnClickListener {
val dpd = DatePickerDialog(this, DatePickerDialog.OnDateSetListener { datePicker, mYear, mMonth, mDay ->
var correctMonth = mMonth + 1
if(mDay<10 && correctMonth>9){
tv_add_date.setText(""+ mYear +"-" + correctMonth + "-0" + mDay)
}
else if(mDay>10 && correctMonth<10){
tv_add_date.setText(""+ mYear +"-0" + correctMonth + "-" + mDay)
} else if(mDay<10 && correctMonth<10){
tv_add_date.setText(""+ mYear +"-0" + correctMonth + "-0" + mDay)
}else{
tv_add_date.setText(""+ mYear +"-" + correctMonth + "-" + mDay)
}}, year, month, day)
dpd.show()
}
更改格式后的新数据库:
数据库查询:
这将无法正常工作,因为您的数据库数据格式不正确。您需要2020年9月1日的格式,但您有2020年9月1日的格式。这意味着您的substr索引不是常数 您能否更改向数据库输入数据的方式?那就行了 您可以尝试使用示例中提供的语法,因为Date需要语法Date'2020-10-31' 最终代码:
SELECT * FROM Transactions WHERE DATE(substr(transactiondate,7,4) || '-' || substr(transactiondate,4,2) || '-' || substr(transactiondate,1,2)) BETWEEN DATE('2020-10-30') AND DATE('2020-10-31')
当数据库中的数据格式也更改为yyyy mm dd时,您只需调用
SELECT * FROM Transactions WHERE transactiondate BETWEEN DATE('2020-10-30') AND DATE('2020-10-31')
将日期的格式更改为YYYY-MM-DD,这样比较起来就很容易了。谢谢,这很有帮助,但我不得不更改查询以获得最终结果。非常感谢!首先,我将我的日期格式化为10个月之前的“0”,但它不起作用。在那之后,我把它改成了你提到的“年-月-日”格式,但仍然不起作用。在链接的帮助下,我将查询从示例更改为:SELECT*from transactiondate介于日期'2020-10-30'和日期'2020-10-31'之间的事务,并且它有效!非常感谢你的帮助。AndreiMeriacre很高兴我能帮上忙,考虑把这个标记为正确的答案来帮助其他人找到解决问题的方法。
SELECT * FROM Transactions WHERE DATE(substr(transactiondate,7,4) || '-' || substr(transactiondate,4,2) || '-' || substr(transactiondate,1,2)) BETWEEN DATE('2020-10-30') AND DATE('2020-10-31')
SELECT * FROM Transactions WHERE transactiondate BETWEEN DATE('2020-10-30') AND DATE('2020-10-31')