Android 无法从日期到日期的SQLite获取数据

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

我在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.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')