Java SQLiteDatabase将日期添加到数据库中
我有一个扩展了SQLiteOpenHelper的类和一个声明为:Java SQLiteDatabase将日期添加到数据库中,java,android,sqlite,datetime,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)"); } 现在我想在其中插入记录,但当我尝试
@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();
}
public void insertRecord(列表)引发异常{
字符串温度,umidita,数据;
SQLiteDatabase db=this.getWritableDatabase();
ContentValues cv=新的ContentValues();
对于(int i=0;i
因为cv.put()只接受两个字符串作为参数。现在,如果我将数据\u date变量解析为字符串,MySql会自动将其转换为正确的格式?您不能将对象插入SQLite,您只能输入
整数
,文本
,水滴
,实数
或数值
因此,您需要将日期作为字符串发送,或者更好的做法是将日期作为时间戳并存储时间戳,以便更容易处理内容您不能将对象插入SQLite,您只能输入
整数
,文本
,水滴
,实数
或数值
因此,您需要将日期作为字符串发送,或者更好地将日期作为时间戳并存储时间戳,以便更容易处理内容。SQLite不支持日期时间格式。相反,我建议您使用ISO8601格式的字符串:
"YYYY-MM-DD HH:MM:SS.SSS"
阅读更多关于它的信息
使用此格式当然支持排序。我更喜欢此字符串格式,因为它更可读。如果选择整数格式(自1970-01-01以来的毫秒数)如果不进行解析,您将无法获得相同的可读性…SQLite不支持日期时间格式。相反,我建议您使用ISO8601格式的字符串:
"YYYY-MM-DD HH:MM:SS.SSS"
阅读更多关于它的信息
使用此格式当然支持排序。我更喜欢此字符串格式,因为它更可读。如果选择整数格式(自1970-01-01以来的毫秒数)如果不进行解析,您将无法获得相同的可读性…SQLite没有日期时间格式:-请尝试以下日期方案:SQLite没有日期时间格式:-请尝试以下日期方案:随后,我对数据库执行select查询,需要按日期升序排列的记录。如果我将日期存储在s ISO格式,我对该查询有问题吗?@giozh只需将日期保存为时间戳,处理起来就容易多了with@tyczj我看不出使用时间戳比ISO8601字符串更容易处理。@giozh当然,当您使用此格式时,您可以按日期排序。只需像在任何其他列上一样使用order by即可。请参阅已编辑的答案。@giozh更简单,因为您只有一个数字,而没有格式化的日期,而且在存储时不必担心时区问题。随后,我对数据库执行select查询,并且需要按日期升序排列的记录。如果我以此ISO格式存储日期,我会对该查询有问题吗?@giozh只需将日期另存为时间戳,这将更容易处理with@tyczj我看不出使用时间戳比ISO8601字符串更容易处理。@giozh当然可以在使用此格式时按日期排序。只需像在任何其他列上一样使用order by即可。请参见编辑的答案。@giozh更容易,因为您只有一个数字,而没有格式ted日期,存储时不必担心时区问题