2

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

例如,使用我的应用程序,他们可以创建WHERE如下子句:列名time(Hours) > time('5:51')在哪里。Hours但是,即使我知道有匹配的行,我似乎也无法得到任何结果。

难道我做错了什么?我没有得到任何例外,只是没有结果。

4

1 回答 1

4

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,它是一个简单的模数。

于 2012-10-27T21:59:25.607 回答