2

HH:MMAndroid アプリケーションと同様に、ユーザーの「作業時間」を SQLite に保存しています。可能であれば、このデータの保存方法を変更したくありません。それは悪夢でしょう。=時刻が、<、または>別のタイムスタンプであるエントリを検索できるようにしてほしい。

たとえば、私のアプリを使用するとWHERE、次のような句を作成できますtime(Hours) > time('5:51')。whereHoursは列名です。しかし、一致する行があることを知っていても、結果が得られないようです。

私は何か間違ったことをしていますか?例外はありません。結果はありません。

4

1 に答える 1

4

time は、それらが偶然にも有効な時間でない限り、期間を受け入れません。したがって、誰かが 40 時間働くことができるとしても、次のようになります。

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

1 を返します (エラーであることを示します)。

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

は 0 です。しかし、おそらく両方とも動作する必要があります。

幸いなことに、2 桁の時間と 2 桁の分に固執する場合は、それらを通常の文字列として比較できます。

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

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

編集: より良い解決策は、単純に分数を INTEGER (SQLite基本型の 1 つ) として保存することです。はい、1 回限りのアップグレード変換を行う必要がありますが、そのほうがよい選択だと思います。

完全な精度があり、簡単に掛けることができ (たとえば、時給で)、一部のレポートで HH:MM として表示する場合は単純なモジュラスです。

于 2012-10-27T21:59:25.607 に答える