Sql server SQL Server:使用变量将数据插入临时表
我正在尝试将@date中的结果插入临时表,这是我的coSql 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
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。我之所以这么做,是因为我想让我的代码简洁易读,因为之前代码太乱了,而且很容易放在代码应该执行的地方。。。也就是说,希望这会有帮助。谢谢!这就是我想要实现的。。。非常感谢你!