日付がこの形式で保存される日付列を持つテーブルがあります。
2012-08-01 16:39:17.601455+0530
このコラムではどうすればいいですgroup
か?group_and_count
month
あなたの最大の問題は、SQLite が日付を日付として直接認識しないことです。
CREATE TABLE YOURTABLE (DateColumn date);
INSERT INTO "YOURTABLE" VALUES('2012-01-01');
INSERT INTO "YOURTABLE" VALUES('2012-08-01 16:39:17.601455+0530');
strftime() を使用して月を取得しようとすると。. .
sqlite> select strftime('%m', DateColumn) from yourtable;
01
. . . 最初の行から月を取得しますが、2 番目の行からは取得しません。
既存のデータを有効なタイムスタンプとして再フォーマットできる場合 (SQLite に関する限り)、この比較的単純なクエリを使用して年と月でグループ化できます。(ほとんどの場合、月だけでグループ化する必要はありません。)
select strftime('%Y-%m', DateColumn) yr_mon, count(*) num_dates
from yourtable
group by yr_mon;
それができない場合は、文字列の解析を行う必要があります。これがこの考えの最も簡単な表現です。
select substr(DateColumn, 1, 7) yr_mon, count(*) num_dates
from yourtable
group by yr_mon;
しかし、それはあなたにとってうまくいかないかもしれません。タイムゾーン情報があるため、一部の値の月が必ず変更されます。完全に一般的な解決策を得るには、タイムゾーンを修正したり、年と月を抽出したりする必要があると思います。より単純なアプローチは、このデータをよく見て、「私はそれらのエッジケースを説明することに興味がない」と宣言し、すぐ上のより単純なクエリを使用することです.