java sqlite datetime_java – 如何在SQLite数据库列中插入时间戳?使用函数时间(‘now’)?...

我正在一个

Android应用程序,我正在创建一个名为HealthDev.db的数据库,其中有一个名为rawData的表,其中有4列:

_id,foreignUserId,data,timeStamp

我已经在bash shell中使用程序sqlite3,并且已经弄清楚,我可以使用以下列模式参数的时间戳列:

timeStamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP

所以当我创建了我使用的表:

create table rawData(_id integer primary key autoincrement,foreignUserId integer,data real,timeStamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP);

这在bash中工作正常.

然后我在sqlite3中练习,并且知道当插入到timeStamp列并使用函数time(‘now’)作为值来存储时,实际上以通用协调时间的形式HH:MM:SS存储时间戳.

所以现在把它转换成java的android应用程序,我使用下面的代码如下.这样,当调用onCreate时,表会自动生成大约20行.如果我在java中正确传递时间(‘now’),这只是测试.

// Below are variables to the database table name and the

// database column names.

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 + " TIMESTAMP DEFAULT CURRENT_TIMESTAMP"

+ ");";

// initializes the columns of the database given by passing the DATABASE_CREATE

// sql statement to the incoming database.

public static void onCreate(SQLiteDatabase database) {

database.execSQL(DATABASE_CREATE);

// For testing

ContentValues contentValues = new ContentValues();

System.out.println("The database is open? " + database.isOpen());

for (int i = 0; i < 20; i++)

{

contentValues.put( COLUMN_FOREIGN_USER_ID, 8976);

contentValues.put( COLUMN_DATA, Math.random()*100 );

contentValues.put( COLUMN_TIME_STAMP, " time('now') " );

database.insert( TABLE_RAW_DATA, null, contentValues );

//contentValues = new ContentValues();

}

}

在eclipse仿真器中运行此代码之后,然后从DDOS视图模式下的文件浏览器中提取数据库文件,用于eclipse的android项目.然后我在bash shell中打开数据库,然后从表rawData中选择所有列,以在shell上显示它.我注意到时间(‘now’)被视为字符串而不是函数.为了证明时间(‘now’)功能的工作,我手动插入一个新行使用time(‘now’)为timeStamp值.然后重新选择所有列再次显示.它成功打印出时间戳为HH:MM:SS.

我认为环境可能会有所不同? bash shell识别函数时间(‘now’),这是用c右键写的,因为我在bash中有sqlite3程序?然而在eclipse当我使用SQL数据库并使用插入它将时间(‘now’)视为一个字符串.请记住,我正在Windows 7操作系统中工作.我正在从作为主机的学校的客户端(SSH Secure Shell)访问bash.

我的主要问题是可以编码它,以便它识别时间(‘now’)功能?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值