Vin*_*ith 5 sql t-sql sql-server sql-server-2008
我希望能够删除超过12个月的表格.表格的名称中包含日期(月份和年份).例如TABLE_A_2011_01,日期为January 2011.
我想要做的是删除那些日期部分超过12个月的表.如果今天的日期是September 15, 2011我要删除所有比旧的表September 15, 2010.
DECLARE @sql NVARCHAR(MAX) = N'';
;WITH p(o,d) AS
(
SELECT QUOTENAME(SCHEMA_NAME([schema_id])) + '.' + QUOTENAME(name),
d = RIGHT(REPLACE(name, '_', ''), 6) + '01'
FROM sys.tables
WHERE ISDATE(RIGHT(REPLACE(name, '_', ''), 6) + '01') = 1
)
SELECT @sql += 'DROP TABLE ' + o + ';' FROM p
WHERE d < CONVERT(CHAR(8), DATEADD(MONTH, -12, CURRENT_TIMESTAMP), 112);
PRINT @sql;
--EXEC sp_executesql @sql;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1088 次 |
| 最近记录: |