2015-10-07 21 views
5

SQLiteで '2015-10-02'から '2015-11-02'までの日付をすべて取得するにはどうすればよいですか?これを約SELECT * FROM myTable where myDate <= '2015-01-01' AND myDate >= '2015-01-31'質問ないある2つの日付間ですべての日付を生成する方法

'2015-10-03' 
'2015-10-04' 
'2015-10-05' 
... 
'2015-11-01' 

:(文字列型) 結果は次のようになります。これはではなく、であり、すべて約の2日間のフィールドを持つレコードを選択することです。私は、2つの日付間のすべての可能な日付値を取得したいだけです。私はそれらを使用してレコードの数を日数で照会したいと考えています。

Date    Count 
'2015-01-01'  19 
'2015-01-02'  10 
'2015-01-03'  0 
... 
+1

可能重複[SQLiteの日付を比較する(http://stackoverflow.com/questions/13091000/sqlite-compare-dates) –

+0

http://stackoverflow.com/questions/7812986/easiest-way- 2日間の日付と日付の間に日付が表示されますが、SQL ServerとSQLiteの相違点については考えていません。 –

+0

以下の回答をお読みいただき、ありがとうございます。 –

答えて

9

WITH RECURSIVE dates(date) AS (
    VALUES('2015-10-03') 
    UNION ALL 
    SELECT date(date, '+1 day') 
    FROM dates 
    WHERE date < '2015-11-01' 
) 
SELECT date FROM dates; 
+0

これは私が探していたものです。どうもありがとう – Andiana

0

あなたの日付列は、既にフォーマットYYYY-MM-DDで日付タイプであるなら、あなたは次のクエリを使用することができます日付列は、実際の文字列である場合、あなたはstrftime()を使用することができます

SELECT date_field AS Date, COUNT(date_field) 
FROM table 
WHERE (date_field BETWEEN '2015-10-02' AND '2015-11-02') 
GROUP BY date_field 

を機能:これは、SQLiteの3.8.3で導入された再帰common table expression、なしでは不可能である

SELECT date_field AS Date, COUNT(date_field) 
FROM table 
WHERE strftime('%Y-%m-%d', date_field) BETWEEN '2015-10-02' AND '2015-11-02' 
GROUP BY date_field 
+0

これは、基準*に適合するテーブル内の*既存のレコードのみを選択しますが、その基準は、基準に適合する適切な間隔で間隔を置いたすべての可能な日付の集合を埋めることを求めているようです。 –

+0

私は編集の前に答えました。 downvoteを削除してください。私はそれを更新しようとします、それは私がそれを削除することはできません感謝します。私はそれに答えた後、彼女は完全に質問を変えました。 –

関連する問題