按“DD-MM-YYYY”格式按日期排序

时间:2014-09-30 13:45:14

标签: android sqlite date sql-order-by

我按日期订购有问题。我将日期存储在我的数据库的TEXT字段中,当我尝试订购时,它没有给我带来正确的结果。

以下是我尝试过的一个查询示例。

Cursor cursor = databaseConnector.getDatabase().query(
                TABELA_PRECIPITACAO, 
                COLUNAS_PRECIPITACAO, 
                COLUMN_PRECIPITACAO_PLUVIOMETRO_ID + " = " + pluviometroId,
                null, 
                null, 
                null,
                "strftime('%Y-%m-%d', '" + COLUMN_PRECIPITACAO_DATA_PRECIPITACAO + "' )" );

我尝试使用功能“date('+ COLUMN_PRECIPITACAO_DATA_PRECIPITACAO +”')“,但它看起来像按日期排序,但ASC或DESC不起作用。它总是带给我相同的顺序。

我知道我应该将日期存储为整数,但我不想更改它,我想要一个这样的解决方案。任何人都可以帮忙吗?感谢。

修改

不工作。我尝试过这两种方式:

Cursor cursor = databaseConnector.getDatabase().query(
                TABELA_PRECIPITACAO, 
                COLUNAS_PRECIPITACAO, 
                COLUMN_PRECIPITACAO_PLUVIOMETRO_ID + " = " + pluviometroId,
                null, 
                null, 
                null,
                "date( " + COLUMN_PRECIPITACAO_DATA_PRECIPITACAO + " )" );

并且''

Cursor cursor = databaseConnector.getDatabase().query(
                TABELA_PRECIPITACAO, 
                COLUNAS_PRECIPITACAO, 
                COLUMN_PRECIPITACAO_PLUVIOMETRO_ID + " = " + pluviometroId,
                null, 
                null, 
                null,
                "date( '" + COLUMN_PRECIPITACAO_DATA_PRECIPITACAO + "' )" );

2 个答案:

答案 0 :(得分:2)

Select * from YourTable
Order by date(COLUMN_PRECIPITACAO_DATA_PRECIPITACAO)

Select * from YourTable
Order by datetime(COLUMN_PRECIPITACAO_DATA_PRECIPITACAO)

答案 1 :(得分:2)

DD-MM-YYYY不是supported formats之一,因此strftime函数(或date)始终返回NULL。

更改您的日期库以使用格式yyyy-mm-dd(在这种情况下,您无需调用任何日期函数;只需直接使用该值进行排序)。