如何在MySQL中获取数据类型为时间戳的所有列名?

问题描述

MysqL中,我的表有很多列。如何获得带有时间戳数据类型的所有列名?我想对数据库中的所有表执行此操作。

时间戳列的数据类型可以是TIMESTAMP或TIMESTAMP(6)。

输出如下:

table_name | column_name | data type    |
-----------------------------------------
tabe01     | column01    | timestamp    |
tabe02     | column03    | timestamp(6) |
tabe03     | column02    | timestamp    |
tabe04     | column05    | timestamp    |

解决方法

@ kevin012这样的东西对您有用吗?您可能需要稍微尝试一下才能使它达到您的喜好,但希望这对您有用。

select tab.table_schema as database_schema,tab.table_name as table_name,col.ordinal_position as column_id,col.column_name as column_name,col.data_type as data_type,case when col.numeric_precision is not null
        then col.numeric_precision
        else col.character_maximum_length end as max_length,case when col.datetime_precision is not null
        then col.datetime_precision
        when col.numeric_scale is not null
        then col.numeric_scale
            else 0 end as 'precision'
from information_schema.tables as tab
    inner join information_schema.columns as col
        on col.table_schema = tab.table_schema
        and col.table_name = tab.table_name
where tab.table_type = 'BASE TABLE'
    and tab.table_schema not in ('information_schema','mysql','performance_schema','sys')
and col.data_type = 'timestamp'
    -- uncomment line below for current database only
    -- and tab.table_schema = database() 
    -- uncomment line below and provide specific database name
    -- and tab.table_schema = 'your_database_name' 
order by tab.table_name,col.ordinal_position;

从来源修改:https://dataedo.com/kb/query/mysql/list-table-columns-in-database