更新数据库中所有表中的日期时间值

时间:2013-12-17 12:21:06

标签: performance tsql datetime sql-update sql-server-2012

如何更新数据库中包含Datetime字段的所有表?

EG。我的DB有50个表,在50个表中有一列是DATETIME Type。 我需要使用新值更新datetime类型的列。

如何使用新值datetime编写通用查询以更新数据库中所有表中的datetime列?

1 个答案:

答案 0 :(得分:1)

虽然我以前所未有的方式质疑它的价值(你应该感到自豪!),但如果没有动态SQL,你就无法编写一个通用的查询。

DECLARE 
  @sql NVARCHAR(MAX) = N'', 
  @newDateTime DATETIME = '20131217 07:30';

SELECT @sql += N'
   UPDATE ' + QUOTENAME(s.name) + '.' + QUOTENAME(t.name) 
     + ' SET ' + QUOTENAME(c.name) + ' = @newDateTime;'
FROM sys.columns AS c 
 INNER JOIN sys.tables  AS t ON c.[object_id] = t.[object_id]
 INNER JOIN sys.schemas AS s ON t.[schema_id] = s.[schema_id]
 WHERE c.system_type_id = 61;

EXEC sp_executesql @sql, N'@newDateTime DATETIME', @newDateTime;