1

人々の名前と誕生日(日付と時刻)が記載されたテーブルがあるとしましょう。次のSQLforSQLiteを使用して、今日の人々の誕生日(日付と時刻)を見つけられるようにしたいと思います。

SELECT * FROM Btable WHERE Bday = date('yyyy-MM-dd')

ただし、常にnilデータセットで返されます。時間も含める必要がありますか?

私のSQLステートメントの正確な何が問題になっていますか?もしそうなら、今日の日付を照会するための正しいSQLステートメントは何ですか。

アップデート:

BETWEENロジックを使用した実際のSQLステートメントは次のとおりです。

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 ALARMTIME BETWEEN date(2012-08-02) 
                    AND date(2012-08-3) 
ORDER BY ALARMTIME DESC
4

2 に答える 2

0

これが私の答えです。

私の列ALARMTIMEはTEXTであるため、次のSQLステートメントを使用してテーブルにクエリを実行し、探しているデータセットを取得できます。

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 ALARMTIME LIKE "2012/08/01%"
  ORDER BY ALARMTIME DESC

ALARMTIMEテキストを日時タイプに変換できません。

于 2012-08-06T13:57:20.267 に答える
0

インスタンスをスピンアップしていませんが、これは機能するはずです。

SELECT * FROM Btable WHERE Bday >= julianday(date('now')));

これにより、次のような文字列が返されます。

2012-08-02 00:00:00

クエリの問題点は、ミリ秒またはその他の精度が欠落している可能性があり、常にfalseと評価されることです。

于 2012-08-02T14:23:40.337 に答える