如何更新数据库中包含Datetime字段的所有表?
EG。我的DB有50个表,在50个表中有一列是DATETIME Type。 我需要使用新值更新datetime类型的列。
如何使用新值datetime编写通用查询以更新数据库中所有表中的datetime列?
答案 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;