java - SQLiteDatabase 添加日期到数据库

标签 java android sqlite datetime

我有一个扩展 SQLiteOpenHelper 的类和一个声明为的数据库:

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + COL_TEMPERATURA
            + " TEXT, " + COL_UMIDITA + " TEXT," + COL_DATA + "DATETIME)");
}

现在我会在其中插入记录,但是当我尝试插入最后一个字段(DATETIME 类型)时,eclipse 告诉我我不能这样做:

public void insertRecord(List<Object[]> list) throws ParseException {
    String temperatura, umidita, data;
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues cv = new ContentValues();

    for (int i = 0; i < list.size(); i++) {
        temperatura = String.valueOf(list.get(i)[0]);
        umidita = String.valueOf(list.get(i)[1]);
        data = String.valueOf(list.get(i)[2]);
        // parsing data
        DateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
        Date data_date = dateformat.parse(data);
        // insert into database
        cv.put(COL_TEMPERATURA, temperatura);
        cv.put(COL_UMIDITA, umidita);
        cv.put(COL_DATA, data_date);
        db.insert(TABLE_NAME, null, cv);
        db.close();
    }

因为 cv.put() 只接受两个字符串作为参数。现在,如果我将 data_date 变量解析为字符串,MySql 会自动将其转换为正确的格式吗?

最佳答案

SQLite 不支持 DateTime 格式。相反,我建议您使用 ISO8601 格式的字符串:

"YYYY-MM-DD HH:MM:SS.SSS"

阅读更多相关信息 here

使用这种格式当然支持排序。我更喜欢这种字符串格式,因为它更具可读性。如果您选择整数格式(自 1970 年 1 月 1 日以来的毫秒数),如果不涉及解析,您将无法获得相同的可读性......

关于java - SQLiteDatabase 添加日期到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18701539/

相关文章:

java - flush() 对 FileWriter 没有用吗,因为它没有缓冲区?

java - eclipse中创建多个文件

java - 如何使用 jcov 查找 java 代码覆盖率

java - SQLite 数据检索到一个类

SQLite:多个聚合列

java - 创建连接到 HBaseTestingUtility 的 HBaseAdmin

android - Android ListView 如何刷新?

Android Facebook SDK 登录问题与解析 sdk

android - CollapsingToolbarLayout 图像在滚动到顶部时保持不变,就像 Play 商店应用程序一样

sql - 在 SQLite 中如何实现多对多关系