如何生成两个日期之间的所有日期

时间:2015-10-07 01:34:55

标签: sqlite date between

如何检索' 2015-10-02'之间的所有日期?到2015-11-02'在SQLite? (字符串类型) 结果将如下:

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

这是关于SELECT * FROM myTable where myDate <= '2015-01-01' AND myDate >= '2015-01-31'的问题。 关于选择所有现有记录,其中包含两天之间的字段。我只想检索两个日期之间的所有可能的日期值。我想用它们来按天查询记录数。

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

2 个答案:

答案 0 :(得分:14)

如果没有SQLite 3.8.3中引入的递归common table expression,这是不可能的:

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;

答案 1 :(得分:0)

如果您的日期列已经是格式为YYYY-MM-DD的日期类型,那么您可以使用以下查询:

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

如果日期列实际上是一个字符串,那么您可以使用strftime()函数:

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