如何将时间戳(长毫秒)值与android

时间:2017-07-11 03:08:43

标签: android sql sqlite android-sqlite

我在SQLite数据库中有一个表调用消息,消息表包含message_date列。我需要7天前插入的数据。我无法比较Date,因为message_date存储为毫秒长值 我的写作查询是:

 Cursor cursor = db.rawQuery("SELECT csId FROM table_messages WHERE date < date('now','-7 days') ", null);

任何人都可以更正我的查询

2 个答案:

答案 0 :(得分:0)

您可以从Date()获得毫秒值.getTime()或System.currentTimeMillis()都将返回&#34;当前时间与UTC时间1970年1月1日午夜之间的差值(以毫秒为单位)。 #34;

获得前七天的时间戳。试试这个 -

Calendar current = Calendar.getInstance();
current.add(Calendar.DATE, -7);
long millis = current.getTime().getTime();//Change this line

Cursor cursor = db.rawQuery(
    "SELECT csId FROM table_messages WHERE date < " + String.valueOf(millis), null);  

编辑:您看到第二行代码,您可以根据需要添加减去天数,并从日历对象中提取毫秒并在查询中使用它

编辑2:
1. current.add(Calendar.DATE,-7);这里-7表示你从今天开始减去7天。您可以将其设为-30(减去30天)或仅30(增加30天)意味着尝试更改值,因为可能是您查询的表没有任何与条件匹配的记录。

2.从表中选择所有行并在logcat上打印并打印从Calendar获得的毫秒数,手动匹配表中是否存在从日历中获得的毫秒数。

3.替换此行long millis = current.getTimeInMillis(); with long millis = current.getTime()。getTime();

4.如果收到错误,请发布错误消息

如果这样可以解决您的问题,请将此帖标记为答案。

答案 1 :(得分:0)

您可以使用时间戳&gt;进行查询6天前&lt; 7天前

Calendar sixDaysAgo = Calendar.getInstance();
        sixDaysAgo.add(Calendar.DATE, -6);
        long millis6Days = sixDaysAgo.getTimeInMillis();

        Calendar sevenDaysAgo = Calendar.getInstance();
        sevenDaysAgo.add(Calendar.DATE, -7);
        long millis7Days = sevenDaysAgo.getTimeInMillis();

        Cursor cursor = db.rawQuery(
                "SELECT csId FROM table_messages WHERE date > " + String.valueOf(millis6Days) + " AND date < " + String.valueOf(millis7Days), null);