私はこれを間違えました-私に恥をかかせます。strftime
ISO 8601(またはタイムスタンプ/ジュリアン)値のみを読み取ります。指定された形式は入力には適用されません。出力値にのみ適用されます。
このため、データベース内のデータは、並べ替えるのに自然な順序である必要があります。推奨される形式は、ISO 8601(文字列)、タイムスタンプ(整数)、およびユリウス日(浮動小数点)です。m/d/y
データベースのように日付を使用すると、自然順序に準拠できないため、範囲比較では機能しません。
strftime
友人は、比較に役立つ値の1つを生成することを許可します。たとえば、ISO 8601 / timestamp/julian入力からcustom/ISO 8601 / timestamp/julian-dateに変換できます。ただし、カスタム値から直接変換することはできません。
データベースを修正する最も簡単な方法は、おそらくPythonなどの言語を使用して、既存のデータを変換するためのスクリプトを作成することです。SimpleDateFormatを利用して既存の値を解析し、推奨されるタイプの1つを使用してそれらを書き戻す小さなJavaプログラムを作成することもできます。
歴史的:
コンソールから分割して試してください(これにより、クエリをより速く実験できるようになります)-最初の条件付き、次に2番目の条件付き。何が何を、そしてなぜ返すのか?各ピースが機能したら、それらを一緒に配置すると機能します。
複数のstrftime形式の間違いがあります-形式については日付と時刻を参照し、文字列をもう一度確認してください:)また、saner日付形式(ISO 8601)を使用datetime
している場合は、形式を明示的に指定することを気にせずに使用できます。ISO 8601の値は、文字列として字句的に並べ替えることもできます。これには、追加の利点があります。
Java SQLite adatperがパラメータとしてパラメータ化されたクエリに渡されたときにDateをどのように処理するかはわかりません(パラメータ化されたクエリを実際に使用する必要があります)...しかし、いずれにせよ、これは現在観察されている動作の二次的な問題です。
ハッピーコーディング。