如何检索' 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
...
答案 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