試試這個:
DECLARE @dtmin date
DECLARE @dtmax date
DECLARE @dynsql nvarchar(3000)
DECLARE @colname varchar(20)
SET @dynsql = N'CREATE TABLE trial('
SET @dtmin = {d '2013-07-15'}
SET @dtmax = {d '2013-07-18'}
DECLARE @currdate date
SET @currdate = @dtmin
WHILE (@currdate <= @dtmax)
BEGIN
SET @colname = DATENAME(month, @currdate) + CONVERT(varchar, DATEPART(day, @currdate))
SET @dynsql = @dynsql + @colname + ' varchar(10)'
IF (@currdate < @dtmax)
BEGIN
SET @dynsql = @dynsql + ', '
END
ELSE
BEGIN
SET @dynsql = @dynsql + ')'
END
SET @currdate = DATEADD(day, 1, @currdate)
END
EXEC sp_executesql @dynsql
PS:我不知道你的請求的原因,但一般不以這種方式正確創建表,因爲你想要的信息投入列,應放在行中。
例子: 如果我想在白天儲存的銷售一天,正確的表,我命名爲銷售,是: SALES(ID VARCHAR(36),DT日期時間,金額小數(19,2)) 代替 銷售(ID VARCHAR(36),dt1十進制(19,2),dt2十進制(19,2)...等等)
因爲如果你想改變你的期限,你必須重寫你的表,如果你想要查詢你的表,你必須爲每種情況寫幾個查詢。這張桌子上的工作非常辛苦。
請重新考慮你的選擇。
祝您有愉快的一天。
請重新表達您的問題。根據我的理解,你有兩列表示一個日期範圍,並且根據這兩個日期之間的天數,你希望將這些列添加到表中或者在另一個表中創建? (這可能是完全錯誤的,但這是從你的問題中明白的) –
你在SP中試過了什麼?首先顯示努力。 – Romesh
從前端先生我有fromdate和Todate字段然後提交我已經從我的C#代碼調用了Sp,現在我想在我的Proc中創建一個表。表格必須沒有。列沒有。的天數在給定日期之間存在。 – social