任何人都可以让我知道查询以查找所有具有日期列的表.
谢谢
这应该可以解决问题,只需在需要时添加其他类型:
select so.name table_name ,sc.name column_name ,st.name data_type from sysobjects so inner join syscolumns sc on (so.id = sc.id) inner join systypes st on (st.type = sc.type) where so.type = 'U' and st.name IN ('DATETIME', 'DATE', 'TIME')
编辑:这也适用于Sybase和任何其他T-SQL变体.
这在当前数据库中的表上使用INFORMATION_SCHEMA.
在SQL Server 2008中测试过.
select distinct c.TABLE_NAME from INFORMATION_SCHEMA.COLUMNS as c where c.DATA_TYPE = 'datetime'
使用系统视图的SQL 2005/2008的另一个查询:
select tbl.name as 'Table', c.name as 'Column Name', t.name as 'Type' from sys.columns as c inner join sys.tables as tbl on tbl.object_id = c.object_id inner join sys.types as t on c.system_type_id = t.system_type_id where t.name in ('datetime', 'date') order by tbl.name
这是RobS的回答的另一个发挥,它将引入所有不同类型的日期格式和时间格式,因为引入了date,datetime2和时间.
SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE LIKE '%date%' OR DATA_TYPE LIKE '%time%'
在SQL Server 2012和2014中测试过但应该在2003,2005,2008以及许多ODBC连接中运行.