android - 从时间戳算起整整几个小时?

标签 android sqlite timestamp

如何从以时间戳形式给出日期的 sqlite 数据库中仅选择包含整小时的条目?

这是数据库的摘录:

 Temper Timestamp   Converted date (only for debugging)
 24.13  1562493806      07/07/2019-12:03
 24.10  1562493746      07/07/2019-12:02
 24.13  1562493686      07/07/2019-12:01
 24.13  1562493626      07/07/2019-12:00
 24.13  1562493566      07/07/2019-11:59
 24.13  1562493506      07/07/2019-11:58

以及 SELECT 语句所需的输出:

24.13 - 1562493626 - 07/07/2019-12:00

我尝试使用 timestamp % 60 = 0,但上面的所有条目都返回 mod = 26,而不是 0

最佳答案

你得到 26 而不是 0 的原因是时间戳也包含秒。
将您的 UNIX 时间戳转换为日期时间字符串(没有秒),然后检查分钟组件是否为 :00:

SELECT *
FROM tablename
WHERE strftime('%d-%m-%Y %H:%M', datetime(timestamp, 'unixepoch')) LIKE '%:00'

我想您明白您的预期结果并不是真正的整整一个小时,因为它确实包含 26 秒。
只有当您省略秒数时,才被视为一个小时。
编辑:
检查这是否更快:

SELECT *
FROM tablename
WHERE (timestamp - (timestamp % 60)) % 3600 = 0

或更好:

SELECT *
FROM tablename
WHERE (timestamp / 60) % 60 = 0

关于android - 从时间戳算起整整几个小时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56923228/

相关文章:

android - 具有多个接口(interface)实现的 Dagger Hilt

android - 如何在仪器测试中模拟 Activity 依赖关系

python - 如何将 Python 字典值保存到 SQLite 模型?

macos - 无法使用 spatialite 创建列 -> 意外的元数据布局

svn - 为什么 svn commit 会改变时间戳?

mysql - CURRENT_TIMESTAMP 以毫秒为单位

android - 如何在用户长按列表项时弹出对话框确认删除?

Android Studio, "local.properties"文件的值神秘不正确?

android - Android 上的 SQLite JDBC 驱动程序

java - SQL Server 和 Java 之间的时间戳差异