【问题标题】:Storing unix timestamp in sql在sql中存储unix时间戳
【发布时间】:2017-06-14 23:40:42
【问题描述】:

我有一个 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

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

localDB.add(image_id, unixTimestamp, PATH);

然后在我的 add 方法中(在 SQLiteHelper 类中)。我打印测试值:

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

它打印1

D/SQL:日期 1

【问题讨论】:

    标签: java android sql sqlite unix-timestamp


    【解决方案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(); 不是打算修改/更改日期参数的值...

    【讨论】:

    • 好吧,在将数据发送到该类之前,我会检查 unix 值及其正确性,当它到达下一个类时,它的 1 我知道这没有任何意义
    • 没关系我发现了问题=,这与日期无关
    猜你喜欢
    • 1970-01-01
    • 2017-02-15
    • 2011-05-16
    • 1970-01-01
    • 2011-10-12
    • 2020-11-24
    • 2016-03-19
    • 1970-01-01
    相关资源
    最近更新 更多