2

sqliteクエリをOrmliteクエリに変換したい。

SELECT * FROM Test where strftime('%m-%Y',Date)='11-2001'

上記のクエリのように日付列をフォーマットできませんでした。

Ormliteの日付列を次のようにフォーマットする方法はMM-yyyy?ありがとう。

4

1 に答える 1

5

それが使用したい正確なSQLである場合は、次のWhere.raw(...)方法を使用できます。

QueryBuilder<Test, Integer> qb = testDao.queryBuilder();
qb.where().raw("strftime('%m-%Y',Date) = '11-2001'");
List<Test> results = qb.query();

ただし、これは、日付フィールドがDATE_STRINGタイプとして保存されている場合にのみ機能するようです。

@DatabaseField(dataType = DataType.DATE_STRING)
Date date;

問題は、デフォルトでXerialJDBCドライバーが日付を次の形式で格納していることです。

2012-07-19 09:58:18.36

これは、承認されたSqlite形式の1つと[完全に]一致しません。

  1. YYYY-MM-DD
  2. YYYY-MM-DD HH:MM
  3. YYYY-MM-DD HH:MM:SS
  4. YYYY-MM-DD HH:MM:SS.SSS
  5. YYYY-MM-DDTHH:MM
  6. YYYY-MM-DDTHH:MM:SS
  7. YYYY-MM-DDTHH:MM:SS.SSS
  8. HH:MM
  9. HH:MM:SS
  10. HH:MM:SS.SSS
  11. DDDDDDDDDD

に変更するとDataType.DATE_STRING、次のように保存されます。これは機能しているようです。

2012-07-19 10:03:49.000991

詳細については、日付関数に関するSqliteドキュメントを参照してください。残念ながら、ドキュメントでは、データベース値を特定の形式にする必要があることを完全には説明していません。

http://www.sqlite.org/lang_datefunc.html

于 2012-06-19T14:04:15.457 に答える