如何将自动时间戳表条目从大纪元时间更改为现在?
目前我的表格使用以下方式设置:
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)
插入当前日期。
这将进入大纪元时间而不是当前日期。
答案 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
对象