[英]SQL Server : insert data into temporary table using a variable
我正在尝试将@date中的结果插入临时表中,这是我的公司
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.