我有一个用户“工作时间”存储在 SQLite 中,就像HH:MM
在我的 Android 应用程序中一样。如果可能的话,我不想更改这些数据的存储方式。那将是一场噩梦。我希望他们能够搜索其时间为=
、<
或>
其他时间戳的条目。
例如,使用我的应用程序,他们可以创建WHERE
如下子句:列名time(Hours) > time('5:51')
在哪里。Hours
但是,即使我知道有匹配的行,我似乎也无法得到任何结果。
难道我做错了什么?我没有得到任何例外,只是没有结果。
time 将不接受持续时间,除非它们同时也是有效时间。所以即使有人可以工作 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基本类型之一)。是的,您需要进行一次升级转换,但我认为这是一个更好的选择。
你有完全的精确度,你可以很容易地乘以(例如按小时费率),如果你想在某些报告中显示为 HH:MM,它是一个简单的模数。