在我的Android应用程序中,我有一个用户“工作时间”存储在SQLite中HH:MM
。如果可能,我不想要更改此数据的存储方式。那将是一场噩梦。我希望他们能够搜索时间为=
,<
或>
其他时间戳的条目。
例如,使用我的应用,他们可以制作如下所示的WHERE
子句:time(Hours) > time('5:51')
其中Hours
是列名。但是,我似乎无法获得任何结果,即使我知道还有匹配的行。
我做错了吗?我没有任何例外,只是没有结果。
答案 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,它就是一个简单的模数。