查询特定数据库中是否存在超过30天前创建的特定架构中的表?

时间:2015-11-24 16:58:05

标签: sql sql-server

我正在尝试向DatabaseA查询在三十天前在SchemaC中创建的表。我设法凑齐了两个单独的查询;找到在SchemaC中创建的所有表的一个:

SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'SchemaC'
ORDER BY TABLE_NAME

找到数据库中30天前创建的所有表:

SELECT [name] AS [DatabaseA], [create_date] AS [CreatedDate] FROM sys.tables
WHERE [create_date] < DATEADD(day, -30, GETDATE())
ORDER BY TABLE_NAME

我可以比较结果并获取我需要的信息,但我确信我缺乏专业知识会阻止我找到返回我想要的所有信息的单个查询。我是否正确地解决这个问题并且有一种更有效的方法?

2 个答案:

答案 0 :(得分:1)

您可以将两个表连接在一起并添加AND,如此

SELECT * FROM INFORMATION_SCHEMA.TABLES t
INNER JOIN sys.tables st ON t.table_name = st.name
WHERE TABLE_SCHEMA = 'SchemaC'
AND [create_date] < DATEADD(day, -30, GETDATE())
ORDER BY TABLE_NAME

答案 1 :(得分:1)

这是另一种直接进入sys.objects的方法。 INFORMATION_SCHEMA对象用于向后兼容。通常应避免使用它们。