2

yyyy-MM-dd HH:mm:ss の形式で値を格納する列を含む SQLite データベースに取り組んでいます。ここで、この日時列としてフィルターを使用して行を選択するフィルターを作成する必要があります。クエリ:

Select * from tbl_locations where datetime >= '2013-09-11 00:00:00' and datetime <='2013-09-13 00:00:00'

上記のクエリは、このスロットに値が含まれているにもかかわらず、null セットを返しています (フィルターなしで select ステートメントを使用して確認しました)。

必要なデータセットを取得するにはどうすればよいですか?

4

2 に答える 2

1

おそらく、SQLite ドキュメントからの次の抜粋が役立つでしょう。

1.2 日付と時刻のデータ型

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 からの秒数。

アプリケーションは、これらの形式のいずれかで日付と時刻を保存することを選択し、組み込みの日付と時刻関数を使用して形式を自由に変換できます。

クエリを作成するために SQL で使用できる日付と時刻の関数は、http: //www.sqlite.org/lang_datefunc.html に記載されています。

于 2013-10-11T20:29:10.013 に答える
0

わかりました、これを MySQL でテストしましたが、うまくいくことを願っています。を使用するテーブルがtimestampsあり、列をタイプに変更しましたtext。次に、次の SQL クエリを試してみたところ、通常と同じ結果が得られました (末尾の小数点以外)。

SELECT  timestamp(stock_quote_timestamp) 
FROM    stock.stock_quote
WHERE   stock_quote_timestamp < timestamp('2013-10-07 11:05:30')#@high_date
AND     stock_quote_timestamp > timestamp('2013-10-03 14:09:03');#@low_date;

したがって、基本的には、正しく比較できるようにtextステートメントを変換するだけです。timestampsああ、他に何をしているのかを述べる必要があります。そうSELECTしないと、複合 select ステートメントを実行できます。SELECT *, timestamp(stock_quote_timestamp)...

于 2013-10-11T20:47:06.313 に答える