在 sql 中存储 unix 时间戳

Storing unix timestamp in sql

我有一个 long 格式的 unix 日期

Long tmpLong = (Long) local.getValue();

这里是 tmpLong 的值

1485710457166

现在我想将这个变量存储在我的 SQLite 数据库中,经过一些研究我发现你不能在 SQLite 中存储 Longs 所以我尝试了这个:

Long tmpLong = (Long) local.getValue();
Integer tmpInt = tmpLong.intValue();

但这给了我:

-348227250

在 SQLite 中我的数据类型是 INTEGER

我需要帮助存储这个 unix 编号,感谢任何帮助

更新 1

如果我尝试将其存储为 long,那么

localDB.add(image_id, unixTimestamp, PATH);

然后在我的添加方法中(在 SQLiteHelper 中 class)。我打印测试值:

 public void add(String image_id, Long date, String path) {
    SQLiteDatabase db = this.getWritableDatabase();
    Log.d("SQL", "date " + date);

它打印 1

D/SQL: date 1

嗯,这就是将 64 位 Long 截断为 32 位整数时会发生的情况...

不要那样做,但尽量按原样存储它(尽可能长),因为 SQLite 整数可以处理这些值,请查看 Datatypes In SQLite

编辑:

您的代码如下:

public void add(String image_id, Long date, String path) {
    SQLiteDatabase db = this.getWritableDatabase();
    Log.d("SQL", "date " + date);
}

如果该代码与发布的一样,那么您将作为日期值的参数 1 传递...方法 this.getWritableDatabase (); 不会modify/change 日期参数的值...