【问题标题】:Order by date in 'DD-MM-YYYY' format以 'DD-MM-YYYY' 格式按日期排序
【发布时间】:2014-11-25 04:15:54
【问题描述】:

我在按日期订购时遇到问题。我将日期存储在我的数据库的 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 + "' )" );

【问题讨论】:

    标签: android sqlite date sql-order-by


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:
      Select * from YourTable
      Order by date(COLUMN_PRECIPITACAO_DATA_PRECIPITACAO)
      

      Select * from YourTable
      Order by datetime(COLUMN_PRECIPITACAO_DATA_PRECIPITACAO)
      

      【讨论】:

      • 我必须使用 rawQuery?不能用查询方法吗?我尝试在 query() 中使用 date(),但没有成功。
      • 可以使用查询方式。你只是在运行一个 sql 语句。
      • 您可能必须使用 rawQuery()
      • 我认为问题出在格式上,因为我红色的 sqlite 只接受 YYYY-MM-DD,所以我会在尝试使用 date() 之前尝试将其转换为该格式方法。
      猜你喜欢
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      相关资源
      最近更新 更多