我必须在SQL Server 2008中创建一个新表,并将我的日期列设置为Getdate()
的自动增量1天。
第一个条目应使用当前日期插入,第二个条目应使用明天的日期,第三个条目应使用后天的日期,依此类推。
我还想知道是否有任何方法可以使用更新命令手动执行此操作,它将今天的日期放在第1列,明天放在第2列。
答案 0 :(得分:0)
无论您需要做什么,此功能都可以让您进行日期递增。
http://technet.microsoft.com/en-us/library/ms186819.aspx
将来某天生成日期的示例:
SELECT DATEADD(dd,1,GETDATE());
**
1)如果你需要在每一行插入上生成一个递增的日期,你当然可以使用一个触发器并在那时进行更新。
Similar question with example of using trigger to do a row update
2)如果您需要生成多行数据并填充表格,您可以执行INSERT操作,并按照更新生成日期。对表结构一无所知,也许这样的事情会起作用:
UPDATE T
SET T.date_col =
(
SELECT
TOP(1) DATEADD(dd,1,date_col)
FROM myTable
WHERE
ID = T.ID - 1
)
FROM myTable T
WHERE
T.date_col IS NULL;
答案 1 :(得分:0)
谢谢大家的努力。我用一个简单的脚本得到了答案。
update t2
set DateColumn = DATEADD(day, rn-1, '1970-01-01')
from @t2 t2
join (
select ROW_NUMBER() over (order by id) rn
, id
from @t2
) t2_numbered
on t2_numbered.id = t2.id
select * from @t2
答案 2 :(得分:0)
只是说出一个逻辑!
insert into myTbl
select Isnull(max(date_column),getdate()) + 1 from myTbl
对于更新,请尝试此操作,abc
是实际表的名称
;with cte as
(
select ROW_NUMBER() over(order by date_col asc) as rno
,date_col
from abc
)
update cte set date_col = Dateadd(dd,rno-1,getdate())
from cte
where cte.date_col is null