0

データベースから情報を取得して保存するAndroidプロジェクトに取り組んでいます(Java側にSqLiteを使用)。

ここに私の要求があります:

String Query = 

"SELECT xxx.APP_ID " + "FROM xxx INNER JOIN yyy ON
xxx.APP_ID = yyy.APP_ID " +

"WHERE date('"+mydate+"') BETWEEN date(xxx.APP_DATEBEGIN) AND date(xxx.APP_DATEEND)
" +

"AND (yyy.USR_ID = " + myid + ") " +

"ORDER BY xxx.APP_DATEBEGIN";

mydateformat is :YYYY-MM-DD HH:MM:SSデータベースの日付と同じ形式です。

convert を使用して同じ要求 (SQL サーバー側) を実行すると、正常に動作します。キーワードdateは SqLite では使用できないと思います。

これを行う別の方法はありますか?

4

2 に答える 2

1

SQLite では、日付を表すために関数を使用する必要はありません。日付を含む単純な文字列を使用するだけです: SQLFiddle demo

これはドキュメントと一致しています:

SQLite には、日付や時刻を格納するためのストレージ クラスが用意されていません。代わりに、SQLite の組み込みの日付と時刻関数は、日付と時刻を TEXT、REAL、または INTEGER 値として格納できます。

  • ISO8601 文字列としての TEXT ("YYYY-MM-DD HH:MM:SS.SSS")。
  • ユリウス日としての REAL。先発グレゴリオ暦による紀元前 4714 年 11 月 24 日のグリニッジ正午からの日数。
  • UNIX 時間としての INTEGER、1970-01-01 00:00:00 UTC からの秒数。
于 2013-02-14T09:16:06.720 に答える
1

ここ:

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

セクション 1.2 では、デート形式のオプションを確認できます (非常に便利なので、このサイトをブックマークすることもお勧めします)。

個人的には、>、<、= を使用して他の日付と簡単に比較できる UNIX UTC 時間システムを使用するのが好きです。また、地域化を気にしないため、ユニバーサル システムのようなものです。

于 2013-02-14T09:16:54.317 に答える