SQLiteDatabase将日期添加到数据库中

时间:2013-09-09 15:16:01

标签: java android mysql 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会自动将其转换为正确的格式吗?

2 个答案:

答案 0 :(得分:3)

您无法在SQLite中插入对象,只能输入IntegersTextBlobsRealNumeric

因此您需要将日期作为字符串发送或更好地将日期作为时间戳并存储时间戳,以便更容易处理内容

答案 1 :(得分:3)

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

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

详细了解here

使用此格式当然支持订购。我更喜欢这种字符串格式,因为它更具可读性。如果您选择整数格式(自1970-01-01以来的毫秒数),如果不进行解析,您将无法获得相同的可读性...