SQL中是否有一种方法可以选择表中具有30天差异跳变的所有可用天?

问题描述 投票:0回答:2

我需要从当前日期中选择所有日期,过去的日期之间要相隔30天。例如,今天是10月18日,所以我需要9月18日,8月​​19日和7月20日。

我不能简单地编写函数current_date-30,current_date-60,current_date-90,因为数据的开头很远。

sql date days
2个回答
0
投票

如果使用的是Oracle,则可以使用以下代码-

WITH DATES(CUR_DATE, MON) AS (SELECT CURRENT_DATE CUR_DATE, 1 MON FROM DUAL
                                UNION ALL
                                SELECT D.CUR_DATE - 30, D.MON + 1 
                                FROM DATES D
                                WHERE TO_CHAR(D.CUR_DATE, 'MM') > 1
                                AND TO_CHAR(D.CUR_DATE, 'YY') = TO_CHAR(SYSDATE, 'YY'))
SELECT * FROM DATES

Here是小提琴。对于其他DB,请发布您的DBMS产品。


0
投票

对于SQL Server,您可以使用以下代码: ;WITH cte_Date30Days(n, d, dte) AS ( SELECT 0, 0, current_timestamp as dte UNION ALL SELECT n+1, d - 30, dateadd(day, -30, dte) FROM cte_Date30Days WHERE n < 7-1 ) SELECT dte FROM cte_Date30Days; 仅返回7行,但更改该值以适合您的需求。

© www.soinside.com 2019 - 2024. All rights reserved.