SQLite如何实现查询过去一整年所有日期的功能
SQLite 生成过去一整年所有日期的等效写法
你可以用递归CTE(公共表表达式)实现该需求,无需依赖系统表,兼容性更好,具体SQL如下:
WITH RECURSIVE date_series AS ( -- 锚点:取一年前的当日作为起始日期 SELECT DATE('now', '-1 year') AS Date UNION ALL -- 递归每次加1天,直到日期等于当前日期 SELECT DATE(Date, '+1 day') FROM date_series WHERE Date < DATE('now') ) SELECT Date FROM date_series;
说明
- 上述语句会自动适配平年/闰年,返回结果为1列,包含从一年前当日到当前日期的所有日期,总共366行,和你给出的SQL Server语句效果完全一致
- SQLite默认递归深度上限为1000,完全满足366天的查询需求,无需额外调整参数。如果后续需要生成更长的日期序列,可以通过
PRAGMA max_recursion_depth = 所需深度;调整递归上限。
内容的提问来源于stack exchange,提问作者ShawnyB
相关产品推荐
相关产品推荐

