我正在嘗試選擇一個包含去年每個日期的表格。
在 SQL Server 中,我可以運行這樣的東西:
SELECT TOP (DATEDIFF(DAY, DATEADD(YEAR, - 1, GETDATE()), GETDATE()) 1)
Date = CAST(DATEADD(DAY, ROW_NUMBER() OVER (ORDER BY a.object_id) - 1, DATEADD(YEAR, - 1, GETDATE())) AS DATE)
FROM sys.all_objects a
它回傳 1 列 366 行,其中包含從 1 年前到現在的日期。
我正在尋找 SQLITE 中的等價物。
uj5u.com熱心網友回復:
您可以使用遞回 CTE 來做到這一點:
WITH cte AS (
SELECT DATE(CURRENT_DATE, '-1 year') date
UNION ALL
SELECT DATE(date, ' 1 day')
FROM cte
WHERE date < CURRENT_DATE
)
SELECT * FROM cte;
請參閱演示。
uj5u.com熱心網友回復:
您也可以使用行內計數表執行此操作
WITH L1(n) AS (
VALUES (1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)
),
L2(n) AS (
SELECT 1 FROM L1 a CROSS JOIN L1 b
)
SELECT DATE(CURRENT_DATE, (-ROW_NUMBER() OVER (ORDER BY 1) 1) || ' days') AS date
FROM L2
LIMIT julianday(CURRENT_DATE) - julianday(DATE(CURRENT_DATE, '-1 year')) 1;
資料庫<>小提琴
對于較新版本的 SQLite,您可能希望添加NOT MATERIALIZED到 CTE。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/361352.html
標籤:sql sql-server sqlite 日期 递归查询
