如何将自动时间戳表条目从Epoch时间更改为现在?

时间:2015-06-23 16:32:57

标签: java android date android-sqlite

如何将自动时间戳表条目从大纪元时间更改为现在?

目前我的表格使用以下方式设置:

CREATE  TABLE  IF NOT EXISTS Calculations (calculation_id INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE , data_id INTEGER, area_id INTEGER, date DATETIME NOT NULL;

我使用以下内容向表中添加条目:

INSERT INTO Calculations (data_id , area_id , date ) VALUES (?1, ?2, date('now') );

当我回忆起日期值时,它们都是:Wed Dec 31 17:00:02 MST 1969

据我了解,date('now')会产生当前日期。

如何将当前日期插入到android-sqlite表条目中?

其他说明:

SQLite支持五个日期和时间函数,如下所示:

date(timestring, modifier, modifier, ...)
time(timestring, modifier, modifier, ...)
datetime(timestring, modifier, modifier, ...)
julianday(timestring, modifier, modifier, ...)
strftime(format, timestring, modifier, modifier, ...)

时间串

时间字符串可以采用以下任何格式:

YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD

我正在尝试使用date(now)插入当前日期。 这将进入大纪元时间而不是当前日期。

2 个答案:

答案 0 :(得分:2)

我认为你的sqlite逻辑是正确的。你可能在其他地方错了。我使用了sqlite3并使用您的脚本测试了以下内容。日期()和日期('现在')似乎都有效。

sqlite> select date();
2015-06-24

sqlite> CREATE  TABLE  IF NOT EXISTS Calculations (calculation_id INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE , data_id INTEGER, area_id INTEGER, date DATETIME NOT NULL);
sqlite> select * from Calculations;
sqlite> INSERT INTO Calculations (data_id , area_id , date ) VALUES (1, 2, date('now') );
sqlite> select * from Calculations;
1|1|2|2015-06-24

sqlite> INSERT INTO Calculations (data_id , area_id , date ) VALUES (1, 2, date() );
sqlite> select * from Calculations;
1|1|2|2015-06-24
2|1|2|2015-06-24

答案 1 :(得分:0)

反馈后,我改变了从数据库中检索存储日期的方式。

此前:

int date = cursor.getInt(cursor.getColumnIndex("date"));
calculation.setDate(new Date(date));

目前:

String date = cursor.getString(cursor.getColumnIndex("date"));
String[] dateArray = date.split("-"); //Split Year-Month-Day
Calendar calendar = new GregorianCalendar(Integer.parseInt(dateArray[0]), Integer.parseInt(dateArray[1]), Integer.parseInt(dateArray[2]) );

从那时起,我最终更改Calculation日期设置为使用Calendar而不是Date对象

的方式