messages
というテーブルがあり、次の列のチャットからのメッセージを格納します。username, message, datetime
、日付時刻の種類はTEXTで、次の形式で格納されます。 : "yyyy/MM/dd hh:mm:ss"。私は特定の時間範囲内の行の平均数を、日付を気にせずに取得したいと考えています。例えば:SQlite:日付を無視して特定の時間範囲内の行を選択
SELECT avg(count(message))
FROM messages
WHERE datetime < "2016/mm/dd 13:00:00" AND
datetime > "2016/mm/dd 12:00:00"
は、任意の文字は「ミリ」と「DD」の場所を取ることを可能にするいくつかの演算子があります。基本的には、特定の日付のメッセージの量ではなく、特定の時間範囲内の平均メッセージ量を取得するクエリを作成しようとしています。
sqliteは年、月、日を区切ってハイフンで「YYYY-MM-DD HH:MM:SS.SSS」と書かれたdatetimesを受け入れるようですが、datetime文字列はスラッシュでフォーマットされています。 –
@ J.Doe次に、日時を適切な形式に変換する必要があります。それはあなたの人生をはるかに簡単にします。これがなければ、この問題を解決するために非常に醜い文字列操作が必要になります。 –
私は、各テーブルエントリをループし、それに応じてdatetime文字列を再フォーマットするプログラムを書く必要がありますか?これを行うにはいくつかの方法がありますか?さらに、AVG機能を使用しようとすると「集計」エラーが発生します。 COUNT(メッセージ)は、WHERE句を尊重するエントリの量を表す整数だけを返しますが、この情報のみで平均計算を実行することはできません。平均計算を実行するには、日数を知る必要があります。 –