0

我希望创建一个带有 1 个日期时间列的临时表,然后用日期(今天前 30 天)填充它。我希望在 select-from 语句中完成所有这些操作。

我可以在 select-from 语句之前使用如下所示的“WITH”循环来做到这一点。但是,我希望在 select-from 语句中执行此操作。

declare @endDate datetime
set @endDate = dateadd(day,-30,getdate())

with CTE_Table (
    Select dataDate = dateadd(day,-1,getdate()) from CTE_Table
    where datediff(day,dataDate,@endDate) < 0
)

select * from CTE_Table

请帮忙... :....(

4

2 回答 2

1

您可以使用SELECT ... INTO.

顺便说一句,您的递归 CTE 无效。固定版本如下

DECLARE @endDate DATETIME

SET @endDate = dateadd(day, -30, getdate());

WITH CTE_Table(dataDate)
     AS (SELECT  dateadd(day, -1, getdate())
         UNION ALL
         SELECT dateadd(day, -1, dataDate)
         FROM   CTE_Table
         WHERE  datediff(day, dataDate, @endDate) < 0)
SELECT dataDate
INTO   #T
FROM   CTE_Table 
于 2013-06-18T09:39:23.377 回答
0

你可以这样做:

CREATE TABLE #temptable
(
        DateColumn DATETIME
)

INSERT INTO #temptable
SELECT dataDate FROM CTE_Table
于 2013-06-18T09:26:13.480 回答