【问题标题】:Sqlite / List of dates for past x calendar daysSqlite /过去x个日历日的日期列表
【发布时间】:2021-09-05 13:28:27
【问题描述】:

以下 SQLite 查询提供了过去 7 个日历日的列表

SELECT Date('now', '-1 days')
UNION
SELECT Date('now', '-2 days')
UNION
SELECT Date('now', '-3 days')
UNION
SELECT Date('now', '-4 days')
UNION
SELECT Date('now', '-5 days')
UNION
SELECT Date('now', '-6 days')
UNION
SELECT Date('now', '-7 days')

结果:

2021-08-29  
2021-08-30  
2021-08-31  
2021-09-01  
2021-09-02  
2021-09-03  
2021-09-04

能否简化查询,因为我可能需要更多天?

【问题讨论】:

    标签: sql sqlite


    【解决方案1】:

    您可以使用递归 CTE。以下包括日期生成中的当前日期。您还可以通过更改where 子句来明确延长持续时间:

    with recursive cte as (
          select date('now') as date, 0 as n
          union all
          select date(date, '-1 day'), n + 1
          from cte
          where n < 7
         )
    select date
    from cte
    where n >= 1;
    

    【讨论】:

      【解决方案2】:

      您需要一个递归 CTE 来获取从 1 到您想要的天数的所有整数,然后在 DATE() 函数中使用这些数字中的每一个来生成日期:

      WITH cte AS (SELECT 1 AS d UNION ALL SELECT d + 1 FROM cte WHERE d < ?)
      SELECT DATE('now', '-' || d || ' days') AS date
      FROM cte;
      

      ? 更改为您想要的天数。
      请参阅demo

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-19
        • 2020-05-23
        • 1970-01-01
        • 2010-09-17
        相关资源
        最近更新 更多