[英]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.