如何生成两个日期之间的所有日期
如何检索SQLite中'2015-10-02'到'2015-11-02'之间的所有日期? (字符串型) 结果将是这样的:如何生成两个日期之间的所有日期
'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
...
这是不可能的,而不递归common table expression,将其在SQLite的3.8.3介绍:
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;
这是我一直在寻找的东西。非常感谢 – Andiana
如果你的日期列已经是一个日期类型的格式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
这只会选择表格中的*现有记录以符合标准,而问题似乎是要求*填充一组所有可能的日期,并以合适的间隔*符合标准。 –
我回答了_before_编辑。请删除downvote。我会尝试更新它,我不能删除它,谢谢。我回答后完全改变了这个问题。 –
的可能的复制[SQLite的比较日期(http://stackoverflow.com/questions/13091000/sqlite-compare-dates) –
http://stackoverflow.com/questions/7812986/easiest-way-在日期和日期之间填充日期范围看起来相关,但我没有考虑SQL Server和SQLite之间可能的方言差异。 –
请查看下面给出的答案,谢谢。 –