1

次のSQLステートメントを使用してSQLite日付ベーステーブルをクエリする必要があります。

SELECT * 
FROM Alarms 
WHERE ALARMSTATE IN (0,1,2) 
  AND ALARMPRIORITY IN (0,1,2,3,4) 
  AND ALARMGROUP IN (0,1,2,3,4,5,6,7) 
  AND DateTime(ALARMTIME) BETWEEN datetime("2012-08-02 00:00:00") 
                    AND datetime("2012-08-03 00:00:00") 
ORDER BY ALARMTIME DESC

ALARMTIMEはTEXTデータ型です。

ALARMTIMEは、「2012年8月3日11:52AM」のようにdatagridviewに表示されます。その形式をDateTime(ALARMTIME)のようなチェックに使用できますか?

このSQLステートメントの唯一の問題は、常にゼロのデータセットまたはレコードを返すことです。ただし、SQLiteは構文について文句を言いません。

4

1 に答える 1

4

厳密に言えば、SQLiteにはその列の日時タイプがありません:

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

ここでの問題は、条件を使用している文字列が有効な日付/時刻ではないため、nullとして扱われることです。

sqlite> SELECT datetime("2012-08-3 00:00:00");

sqlite> SELECT datetime("2012-08-03 00:00:00");
2012-08-03 00:00:00

2012-08-03(の代わりに注意してください2012-08-3。)

さらに、の値ALARMTIMEも正しくフォーマットされていることを確認してください。

于 2012-08-03T15:36:54.533 に答える