SQlite使用时间戳列创建数据库并在其中添加值

时间:2013-05-16 19:45:16

标签: database sqlite timestamp

我正在尝试创建一个名为rawData的数据库。 db将为id提供一个列,一个外部用户id(来自另一个表的_id),数据以及最后一个时间戳。

我的问题是如何在SQlite中创建时间戳并将其存储在数据库中,该列应该是什么类型的文本?数据库需要能够每秒存储150个浮点值,并为这150个条目中的每个条目添加时间戳。另外,由于SQlite没有float类型,我应该使用real作为列类型吗?

public class RawDatabase{
public static final String TABLE_RAW_DATA = "rawData";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_FOREIGN_USER_ID = "foreignUserId";
public static final String COLUMN_DATA = "data";
public static final String COLUMN_TIME_STAMP = "timeStamp";

// Database creation sql statement
private static final String DATABASE_CREATE = "create table "
    + TABLE_RAW_DATA + "(" + COLUMN_ID
    + " integer primary key autoincrement, " + COLUMN_FOREIGN_USER_ID
    + " integer, " + COLUMN_DATA 
    + " real, " + COLUMN_TIME_STAMP
    + " text not null);";
}

2 个答案:

答案 0 :(得分:21)

documentation说:

  

SQLite没有预留用于存储日期和/或时间的存储类。相反,SQLite的内置Date And Time Functions能够将日期和时间存储为TEXT,REAL或INTEGER值:

     
      
  • TEXT 为ISO8601字符串(“YYYY-MM-DD HH:MM:SS.SSS”)。
  •   
  • REAL 作为朱利安日数,是公元前4714年11月24日格林威治中午以来的天数。根据预感格里高利历。
  •   
  • INTEGER as Unix Time,自1970-01-01 00:00:00 UTC以来的秒数。
  •   
     

应用程序可以选择以任何格式存储日期和时间,并使用内置的日期和时间函数在格式之间自由转换。

如果只需要秒精度,请使用Unix时间格式的整数。 否则,请使用浮动指针数字进行小数秒。

答案 1 :(得分:-1)

这是带有SQlite和Java中的日期的DAO的运行示例:

首先在TABLE中创建MY_DATE TIMESTAMP列并填充如下:

PreparedStatement st = connection.prepareStatement("INSERT INTO ......");
st.setDate(1, new java.sql.Date(lettura.getData().getTime()));

首先检索数据我得到字符串类型的日期:

String dateStr = rs.getString(1);
Date myDate = new java.util.Date(Long.parseLong(dateStr));