Sql server SQL Server:使用变量将数据插入临时表

Sql server SQL Server:使用变量将数据插入临时表,sql-server,Sql Server,我正在尝试将@date中的结果插入临时表,这是我的co DECLARE @MinDate DATE = CONVERT(VARCHAR(15), DATEADD(month, DATEDIFF(MONTH, 0, GETDATE()), 0), 101), @MaxDate DATE = CONVERT(VARCHAR(15), EOMONTH(GETDATE()), 101), @dayInMonth VARCHAR(15); DECLARE @date D

我正在尝试将@date中的结果插入临时表,这是我的co

DECLARE @MinDate DATE = CONVERT(VARCHAR(15), DATEADD(month, DATEDIFF(MONTH, 0, GETDATE()), 0), 101), 
        @MaxDate DATE = CONVERT(VARCHAR(15), EOMONTH(GETDATE()), 101),
        @dayInMonth VARCHAR(15);

DECLARE @date DATE; 
DECLARE @counter INT = 0;

DECLARE my_cursor CURSOR LOCAL STATIC READ_ONLY FORWARD_ONLY FOR 
     SELECT TOP 
         (Datediff(day, @MinDate, @MaxDate) + 1) Date = Dateadd(day, Row_number() OVER(ORDER BY a.object_id) - 1, @MinDate) 
     FROM   
         sys.all_objects a 
     CROSS JOIN 
         sys.all_objects b; 

OPEN my_cursor 

FETCH next FROM my_cursor INTO @date 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    IF( @counter = 15 ) 
    BEGIN
        --PRINT @date
        --PRINT @date -- here is where you get the 15th date
        IF DAY(@date) BETWEEN 10 AND 20
        BEGIN
            SET @date = DATEADD(DAY,(15-DATEPART(DAY,@date)),@date)
            PRINT CONVERT(VARCHAR(15), @date, 101)
            SET @counter = 0
        END

        IF @counter = 0 
        BEGIN
            SET @date = DATEADD(DAY,(30-DATEPART(DAY,@date)),@date)
            PRINT CONVERT(VARCHAR(15), @date, 101)
        END
    END 

    SET @counter = @counter + 1 

    FETCH next FROM my_cursor INTO @date 
END 

CLOSE my_cursor 
DEALLOCATE my_cursor
我是否可以将结果插入到临时表中?如果是的话。。。怎么做


任何帮助都可以。谢谢

如果我正确理解了你的问题,这应该是可行的

    DECLARE @MinDate DATE = CONVERT(VARCHAR(15),DATEADD(month, DATEDIFF(MONTH, 0, GETDATE()), 0), 101), 
        @MaxDate DATE = CONVERT(VARCHAR(15),EOMONTH(GETDATE()),101),
--DECLARE @MinDate DATE = '20170301', 
--        @MaxDate DATE = '20170331',
        @dayInMonth VARCHAR(15);
DECLARE @date DATE; 
DECLARE @counter INT = 0;

DECLARE my_cursor CURSOR LOCAL STATIC READ_ONLY FORWARD_ONLY FOR 
  SELECT TOP (Datediff(day, @MinDate, @MaxDate) + 1) Date = 
  Dateadd(day, Row_number() 
                 OVER( 
                   ORDER 
  BY a.object_id) - 1, @MinDate) 
  FROM   sys.all_objects a 
         CROSS JOIN sys.all_objects b; 


Create table #temp (datevar varchar(15))
OPEN my_cursor 

FETCH next FROM my_cursor INTO @date 

WHILE @@FETCH_STATUS = 0 
  BEGIN 
      IF( @counter = 15 ) 
        BEGIN
        --PRINT @date
        --PRINT @date -- here is where you get the 15th date
          IF DAY(@date) BETWEEN 10 AND 20
              BEGIN
                SET @date = DATEADD(DAY,(15-DATEPART(DAY,@date)),@date)
                insert into #temp values (CONVERT(VARCHAR(15), @date, 101))
                PRINT CONVERT(VARCHAR(15), @date, 101)
                SET @counter = 0
              END
              IF  @counter = 0 
              BEGIN
                SET @date = DATEADD(DAY,(30-DATEPART(DAY,@date)),@date)
                insert into #temp values (CONVERT(VARCHAR(15), @date, 101))
                PRINT CONVERT(VARCHAR(15), @date, 101)
              END
        END 
      SET @counter = @counter + 1 
      FETCH next FROM my_cursor INTO @date 
  END 

CLOSE my_cursor 
DEALLOCATE my_cursor

select * from #temp

您实际上想插入什么内容??你在游标内打印的日期是正确的。我在你的代码中没有看到任何临时表(
#someTable
##someTable
)。你的意思是“table variable”(
@someTable
)?您好@stakx,我删除了它,但实际上我在if语句计数器中插入了#testbl。我之所以这么做,是因为我想让我的代码简洁易读,因为之前代码太乱了,而且很容易放在代码应该执行的地方。。。也就是说,希望这会有帮助。谢谢!这就是我想要实现的。。。非常感谢你!