按日期排序列表?

时间:2011-06-06 14:03:19

标签: android database sql-order-by

我有一个问题。在我的应用程序中,我已在数据库中保存了一些列表。每个列表都以2011年6月6日的格式提供了日期。我如何按日期订购这些清单?我写了这样的功能:

public Cursor getAll(){

    return (mDb.rawQuery("SELECT _id, Title, Shop , Data , Budget_allocated ," +
            " Budget_spent FROM Lists ORDER BY Data",null));
}

但它不能正常工作。我认为只比较一天。例如,如果我有2011年5月31日和2011年6月6日,它会说第一个日期是在第二个日期之后。

有可能我想做什么?我应该以这样的格式修改日期:6-06-2011?

谢谢..

3 个答案:

答案 0 :(得分:0)

使用以下日期格式...... yyyy-MM-dd HH:mm:ss。保证按升序或降序排序。

答案 1 :(得分:0)

如果您的Data列不是日期时间类型,则可能存在问题。看看这个相关的SO问题和答案:

SQL ORDER BY date problem

答案 2 :(得分:0)

我对android开发一无所知,但听起来你的日期字段存储为字符串而不是日期,这是正确的吗?

如果是这样,您可以:

  • 更改您的表格以使该字段为日期(然后它应该正确比较)
  • 或者以标准格式存储它,以便默认字符串比较正确排序日期。由于字符串比较首先在第一个字符上排序,第二个在第二个字符上排序等,这将首先放置最大的时间差,即。 “2011-05-31”(包括零)。

(您应该能够通过创建一个新字段来转换字段,将旧字段中的数据以正确的格式复制到新字段中,然后删除旧字段并重命名新字段,或者更简单地你只想改变文本的格式。你应该能够通过代码或“更新”查询,AFAIK来做到这一点。)