Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何让SQLite使用YYYY-MM-DD格式按日期正确排序?_Java_Android_Sqlite - Fatal编程技术网

Java 如何让SQLite使用YYYY-MM-DD格式按日期正确排序?

Java 如何让SQLite使用YYYY-MM-DD格式按日期正确排序?,java,android,sqlite,Java,Android,Sqlite,我正在制作一个应用程序,它需要按日期对Sqlite周表进行排序,并在列表视图中仅显示日期和每周工作的总小时数 “我的活动”扩展了listview,并使用SimpleCursorAdapter填充listview。“我的日期”列是一个文本字段,格式如下“YYYY-MM-DD” 这是我的数据库查询函数,我的数据库助手类基于GoogleNotepad示例 public Cursor getAllWeeks() { Cursor mCursor = mDb.query(true,

我正在制作一个应用程序,它需要按日期对Sqlite周表进行排序,并在列表视图中仅显示日期和每周工作的总小时数

“我的活动”扩展了listview,并使用SimpleCursorAdapter填充listview。“我的日期”列是一个文本字段,格式如下“YYYY-MM-DD”

这是我的数据库查询函数,我的数据库助手类基于GoogleNotepad示例

public Cursor getAllWeeks()
    {
        Cursor mCursor = mDb.query(true, DATABASE_TABLE, null, null, null, null, null, "weekdate ASC", null);


        if (mCursor != null)
        {
            mCursor.moveToFirst();
        }

        return mCursor;
    }
我将其挂接到ListView,如下所示:

public class WeekList extends ListActivity implements OnClickListener{
    final static int DELETE_ID = Menu.FIRST + 1;

    public static NotesDbAdapter DBadapter;
    public static Cursor ListCursor;

    static final String[] displaycolumns = {"weekdate", "weektotalhours"};
    static final int[] listitemviews = {R.id.TextViewListItem1, R.id.TextViewListItem2};

    @Override
    public void onCreate(Bundle icicle)
    {
        super.onCreate(icicle);
        setContentView(R.layout.weeklist);
        Log.i("bendebug", "logtest");

        DBadapter = new NotesDbAdapter(this);
        DBadapter.open();
        ListCursor = DBadapter.getAllWeeks();


        this.setListAdapter(new SimpleCursorAdapter(this, R.layout.listitemlayouts, ListCursor, 
                displaycolumns, listitemviews));
        findViewById(R.id.ButtonAddWeek).setOnClickListener(this);

        //Activate the context menu
        registerForContextMenu(getListView());

    }
2010-7-19
2010-7-23
2010-7-24
2010-7-6
我遇到的问题是,我的光标似乎没有正确排序,我的周列表如下所示:

public class WeekList extends ListActivity implements OnClickListener{
    final static int DELETE_ID = Menu.FIRST + 1;

    public static NotesDbAdapter DBadapter;
    public static Cursor ListCursor;

    static final String[] displaycolumns = {"weekdate", "weektotalhours"};
    static final int[] listitemviews = {R.id.TextViewListItem1, R.id.TextViewListItem2};

    @Override
    public void onCreate(Bundle icicle)
    {
        super.onCreate(icicle);
        setContentView(R.layout.weeklist);
        Log.i("bendebug", "logtest");

        DBadapter = new NotesDbAdapter(this);
        DBadapter.open();
        ListCursor = DBadapter.getAllWeeks();


        this.setListAdapter(new SimpleCursorAdapter(this, R.layout.listitemlayouts, ListCursor, 
                displaycolumns, listitemviews));
        findViewById(R.id.ButtonAddWeek).setOnClickListener(this);

        //Activate the context menu
        registerForContextMenu(getListView());

    }
2010-7-19
2010-7-23
2010-7-24
2010-7-6
而不是被正确地分类。我可能错过了一些非常明显的东西,因为我是一个试图自学的傻瓜


显然,我缩短了代码以使其更具可读性,因为活动的其余部分与此无关,但我很乐意根据请求发布活动的完整代码,不管怎样,这都是非常基本的。

使用月和日的前导零。

SQLite没有内置日期字段;您必须使用
TEXT
(文本表示)、
INTEGER
(unix时间)或REAL。请参阅:


您可以使用前导零(如dan所建议的),或者更好地将它们另存为
INTEGER
字段。您可以使用或Java(或您正在使用的任何东西)将这些数据转换回人类可读的日期。

我必须进行类似的排序。最后,我将日期作为实数存储在SQLite中,以自1970年1月1日00:00 GMT以来的毫秒数表示。然后,您可以简单地对这些日期进行数字排序(较大的数字随后按时间顺序出现)。然后可以使用SimpleDataFormat将其转换为字符串。还可以让你利用时间元素做一些有帮助的事情--

+1你发帖的时候,我确实是在打字。例如,拥有
2010-07-06
将解决所有订购困难。非常感谢,我不敢相信我没有注意到这一点。好的,我将研究时间戳的问题,这可能会使更改数据库中的某些内容更容易。