nin*_*ded 19
这应该可以解决问题,只需在需要时添加其他类型:
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')
Run Code Online (Sandbox Code Playgroud)
编辑:这也适用于Sybase和任何其他T-SQL变体.
Rob*_*obS 17
这在当前数据库中的表上使用INFORMATION_SCHEMA.
在SQL Server 2008中测试过.
select distinct c.TABLE_NAME
from INFORMATION_SCHEMA.COLUMNS as c
where c.DATA_TYPE = 'datetime'
Run Code Online (Sandbox Code Playgroud)
使用系统视图的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
Run Code Online (Sandbox Code Playgroud)
这是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%'
Run Code Online (Sandbox Code Playgroud)
在SQL Server 2012和2014中测试过但应该在2003,2005,2008以及许多ODBC连接中运行.