TimeStamp Java和SQLite之间的区别

Rad*_*lav 2 java sqlite time android unix-timestamp

你好我和SLQLite数据库,其中我有表water_logs

CREATE TABLE water_logs( 
_id INTEGER PRIMARY KEY AUTOINCREMENT,
amount REAL NOT NULL,
icon INTEGER NOT NULL,
date INTEGER NOT NULL);
Run Code Online (Sandbox Code Playgroud)

我以毫秒为单位存储日期.

Calendar cal = Calendar.getInstance(); 
cal.getTimeInMillis();
Run Code Online (Sandbox Code Playgroud)

我的问题是我想使用strftime函数从我的日期列中获取这一天.问题是tjat java日历时间戳与SLQLite时间戳不同

1436859563832 --> result from cal.getTimeInMillis();

1436607407--> SELECT strftime('%s','now')
Run Code Online (Sandbox Code Playgroud)

我实际上要做的是按天分组记录.如果在日期列中粘贴SELECT strftime('%s','now')的值,则以下SQL查询可以正常工作

SELECT SUM(amount), date(`date`) FROM water_logs
GROUP BY date(`date`, 'unixepoch')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在此输入图像描述

在此输入图像描述

Eya*_*ran 6

在我看来,您使用的是2种不同的值类型.

当你使用

Calendar cal = Calendar.getInstance(); 
long time = cal.getTimeInMillis();
Run Code Online (Sandbox Code Playgroud)

输出值是毫秒,如所描述这里.

当你使用时

strftime('%s','now')
Run Code Online (Sandbox Code Playgroud)

输出值是,如所描述这里.

因此,这可能是导致两个值不匹配的原因.当然,以秒为单位的值可能会经历一些舍入,这可能会稍微改变其值.