任何人都可以让我知道查询以找到所有具有日期列的表。 谢谢

问题描述 投票:0回答:6
这应该做到这一点,只需添加其他类型,如果需要的话:

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', 'SMALLDATETIME')

sql-server-2005 t-sql date types
6个回答
22
投票
Edit:

这也适用于Sybase和任何其他T-SQL变体。

**更新2/3/2025 **
上面在MS SQL较新的数据库中不起作用
但是下面确实有

SELECT so.name table_name ,sc.name column_name ,st.name data_type FROM sys.objects so INNER JOIN sys.columns sc ON so.object_id = sc.object_id INNER JOIN sys.types st ON sc.user_type_id = st.user_type_id WHERE so.type = 'U' AND st.name IN ('DATETIME', 'DATE', 'TIME', 'SMALLDATETIME') 这在当前数据库中的表上使用信息_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
    

18
投票
当Robs的答案中,它是自引入日期,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连接工作。

在上面查询的抢劫调查的光明改进。这也返回模式名称列。

select s.name as 'SchemaName', 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 inner join sys.schemas s on tbl.schema_id = s.schema_id where t.name in ('datetime', 'date') order by s.name, tbl.name



11
投票

SELECT DISTINCT(TABLE_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE='datetime'

对于多个数据类型,您可以使用以下代码:


2
投票

我知道这是一个古老的问题,但我发现它正在寻找类似的问题解决方案。
这是我正在使用的:

1
投票
您可以在此处找到所有基本数据类型:

Http://www.sqlservercurry.com/2008/06/find-all-columns-with-varchar-varchar-and.html

如果您想在特定表中找到具有特定类型的所有列,只需使用以下方式:

SELECT OBJECT_NAME(col.OBJECT_ID) AS [TableName] ,col.[name] AS [ColName] ,typ.[name] AS [TypeName] FROM sys.all_columns col INNER JOIN sys.types typ ON col.user_type_id = typ.user_type_id WHERE col.user_type_id IN (61) AND OBJECT_NAME(col.OBJECT_ID) = 'TABLE_NAME'

可能有人会发现它很有用:)
    

0
投票
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.