如何从以时间戳形式给出日期的 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/