【问题标题】:Get List of Last 15 Days Date in SQL在 SQL 中获取最近 15 天日期的列表
【发布时间】:2020-09-20 12:49:02
【问题描述】:

SQL 能否在单个查询中获取最近 15 天日期的日期列表?

我们可以得到今天的日期

select current_date()

我们也可以得到最近 15 天的日期

select date_add(current_date(), -15)

但是如何显示最近 15 天的日期列表? 例如输出是

2020-05-17, 
2020-05-18, 
2020-05-19, 
2020-05-20, 
2020-05-21, 
2020-05-22, 
2020-05-23, 
2020-05-24, 
2020-05-25, 
2020-05-26, 
2020-05-27, 
2020-05-28, 
2020-05-29, 
2020-05-30, 
2020-05-31

【问题讨论】:

  • RDBMS 用于存储和检索关系数据。对于其他事情,请考虑使用应用程序级代码。
  • 指定 MySQL 版本。
  • @Akina 我正在使用 hive 版本 1.1.0-cdh5.16.2 rUnknown
  • 执行SELECT VERSION();并显示输出。
  • @Akina 我在上面告诉过你。版本是1.1.0-cdh5.16.2 rUnknown

标签: sql date hive calendar hiveql


【解决方案1】:

在 Hive 或 Spark-SQL 中:

select date_add (date_add(current_date,-15),s.i) as dt 
  from ( select posexplode(split(space(15),' ')) as (i,x)) s

结果:

2020-05-18
2020-05-19
2020-05-20
2020-05-21
2020-05-22
2020-05-23
2020-05-24
2020-05-25
2020-05-26
2020-05-27
2020-05-28
2020-05-29
2020-05-30
2020-05-31
2020-06-01
2020-06-02

另见this answer

【讨论】:

    【解决方案2】:
    WITH 
    cte AS ( SELECT 1 num UNION ALL SELECT 2 UNION ALL ... UNION ALL SELECT 15 )
    SELECT DATEADD(CURRENT_DATE(), -num)
    FROM cte;
    

    或者,例如

    WITH 
    cte1 AS ( SELECT 1 num UNION ALL 
              SELECT 2 UNION ALL 
              SELECT 3 UNION ALL 
              SELECT 4 UNION ALL 
              SELECT 5 ),
    cte2 AS ( SELECT 0 num 
              UNION ALL SELECT 1 
              UNION ALL SELECT 2 )
    SELECT DATEADD(CURRENT_DATE(), -cte1.num - cte2.num * 5)
    FROM cte1, cte2;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      相关资源
      最近更新 更多