首页 > 解决方案 > JAVA + SQLite - 使用 strftime() 从每一行获取格式化日期

问题描述

我已经使用 SQLite 大约一天了,并且已经设法使用 Java 在 Android Studio 中进行读写。我对这一切还是很陌生,即使是 java,所以我可能会遗漏一些非常基本的东西。

昨天我设法得到了一些工作,并达到了预期的结果。我会将年、月、...、秒保存到他们自己的列中,然后单独读取它们并手动将它们格式化为字符串。但是今天我读到 SQLite 有自己的内置日期和时间函数,当您将其存储为特定格式的文本时。

我已将所有内容更改为使用这种格式,这很容易,但我很难以特定格式读取日期。现在的格式是:

yyyy-MM-dd HH:mm:ss

但是,我想将其格式化为:

yyyy : MM : dd : HH : mm : ss

到目前为止,我只是将它存储在一个字符串列表中,这是可行的,我认为我不需要更改它。

这是读取日期的代码:

public ArrayList readHistory(){
        SQLiteDatabase nutDatabase = this.getReadableDatabase();
        ArrayList<String> history = new ArrayList<String>();

        Cursor cursor = nutDatabase.rawQuery("select * from " + TABLE_NAME, null);
        cursor.moveToFirst();

        while (!cursor.isAfterLast()){
            String nutString = cursor.getString(dateTime);
            history.add(nutString);
            cursor.moveToNext();
        }
        return history;
    }

如您所见,它目前只是将它作为一个字符串获取它当前的格式。我不知道如何实现 strftime() 但我知道它正是我需要的。

任何输入表示赞赏,谢谢!

标签: javaandroidsqlitedateandroid-sqlite

解决方案


使用中的格式'%Y : %m : %d : %H : %M : %S'。 因此,将您的代码更改为:strftime()

String sql = "SELECT strftime('%Y : %m : %d : %H : %M : %S', dateTime) AS dateTime FROM " + TABLE_NAME;
Cursor cursor = nutDatabase.rawQuery(sql, null);

推荐阅读