如何在SQLite中比较小时和分钟?

时间:2012-10-27 21:52:42

标签: android sqlite time

在我的Android应用程序中,我有一个用户“工作时间”存储在SQLite中HH:MM。如果可能,我想要更改此数据的存储方式。那将是一场噩梦。我希望他们能够搜索时间为=<>其他时间戳的条目。

例如,使用我的应用,他们可以制作如下所示的WHERE子句:time(Hours) > time('5:51')其中Hours是列名。但是,我似乎无法获得任何结果,即使我知道还有匹配的行。

我做错了吗?我没有任何例外,只是没有结果。

1 个答案:

答案 0 :(得分:4)

时间不会接受持续时间,除非它们同时也是有效时间。所以即使有人可以工作40个小时:

SELECT (time('40:00') IS NULL);

给出1(显示错误)。

SELECT (time('11:00') IS NULL);

是0.但可能两者都需要工作。

幸运的是,如果您坚持两位数小时和两位数分钟,您可以将它们作为普通字符串进行比较。

SELECT '84:13' > '29:03';
1

SELECT '05:12' > '43:58';
0

编辑:更好的解决方案可能是将分钟数存储为INTEGER(SQLite base types之一)。是的,您需要进行一次性升级转换,但我认为这是一个更好的选择。

你有完全的精确度,你可以轻松地乘以(例如按小时率),如果你想在某些报告中显示为HH:MM,它就是一个简单的模数。