关于在SQLITE数据库表中插入本地系统时间的做法

首先,我参考下面的博文地址:http://blog.csdn.net/liuzhidong123/article/details/6847104

 

sqlite3 表里插入系统时间(时间戳)

分类: sqlite3 时间戳 5010人阅读 评论(4) 收藏 举报

就像在提交日志的时候系统会把提交的时间记录下来一样,如果想在sqlite3下创建的表里插入数据的时候也把插入数据的时间点存储在sqlite数据库里怎么处理呢?

创建一个数据库,如foo.db

 

在这个表里创建一个表:

CREATE TABLE time([ID] INTEGER PRIMARY KEY,[IDCardNo] VARCHAR (50),[CreatedTime] TimeStamp NOT NULL DEFAULT CURRENT_TIMESTAMP);

插入数据:

INSERT INTO time([IDCardNo]) VALUES('aaa'); 

查看:

select * from time;

结果是

1|aaa|2011-10-6 06:48:51

这时会发现这个时间并不是系统的时间,而世界时间,怎么处理呢?

CREATE TABLE time([ID] INTEGER PRIMARY KEY,[IDCardNo] VARCHAR (50),[CreatedTime] TimeStamp NOT NULL DEFAULT (datetime('now','localtime')));

再次插入数据

INSERT INTO time([IDCardNo]) VALUES('aaa'); 

查看:

1|aaa|2011-10-6 13:05:51

这样就和系统的本地时间对应了。

==========================

按照上述博文的做法,我插入的系统时间一项中是不对的。当我到处找资料的时候,发现大家都是用的这种做法,那么问题出在哪里呢?

后面我在插入数据的时候,改了一下,INSERT INTO time([IDCardNo],TimeStamp ) VALUES('aaa',datetime('now','localtime')); 

结果时间才跟电脑上显示的系统本地时间是对应的了。

原因:

  原因出在,我在插入每个数据,应该在时间那项里面跟上datetime('now', 'localtime');

  这样才会对,现在时间是一样的了,之前我在时间这项上面没有插入数据,因为我觉得在创建表的时候用NOT NULL DEFAULT datetime('now', 'localtime'),以为我不插入时间项,在每项的时候会自动插入,结果自动插入是实现了,不过时间不对,与电脑上显示的时间老是相差那么几个小时。
  我的个去,这种问题,蛋碎啊
原文地址:https://www.cnblogs.com/lihaiping/p/sqlitedatetime.html