简体   繁体   English

SQL:如何创建一个临时表并在select-from语句中用日期填充它

[英]SQL: How to create a temp table and fill it with date within a select-from statement

I wish to create a temp table with 1 datetime column and then fill it with date(30 days before today). 我想用1个datetime列创建一个临时表,然后用date(今天之前30天)填充它。 I wish to do all these in a select-from statement. 我希望在select-from语句中完成所有这些操作。

I could do it with a "WITH" loop as below prior to the select-from statement. 在select-from语句之前,可以使用下面的“ WITH”循环来完成此操作。 However, I wish to do it within a select-from statement. 但是,我希望在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

Please help... :....( 请帮忙... :....(

You can use SELECT ... INTO . 您可以使用SELECT ... INTO

BTW Your recursive CTE is invalid. BTW您的递归CTE无效。 A fixed version is below 固定版本如下

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 

You could do: 您可以这样做:

CREATE TABLE #temptable
(
        DateColumn DATETIME
)

INSERT INTO #temptable
SELECT dataDate FROM CTE_Table

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM