如何从表中找到时间戳列

时间:2018-08-09 11:58:42

标签: sql oracle

我想查找表中有多少列是时间戳列。 我已经尝试过像下面这样的简单查询,通过对列的名称进行硬编码来使带有时间戳的列退役

SELECT time1, time2 FROM givenTable;

但是我不想对时间戳列的名称进行硬编码。 SQL中有什么方法可以告诉我表中列的名称是timestamp列?

3 个答案:

答案 0 :(得分:3)

select * from SYS.ALL_TAB_COLUMNS
where table_name = 'TABLE_XYZ'
and owner = USER
and data_type like 'TIMESTAMP%'

您应该像对data_type进行过滤一样使用,因为您还可以使用精度为TIMESTAMP(6)的时间戳

答案 1 :(得分:2)

对于oracle,USER_TAB_COLUMNS将提供有关表的所有详细信息。

SELECT table_name, column_name, data_type, data_length
FROM USER_TAB_COLUMNS
WHERE table_name = 'MYTABLE'

答案 2 :(得分:1)

尝试一下。

SELECT   column_name, data_type FROM all_tab_columns where table_name = 'givenTable'; 

识别时间戳的确切数据类型并添加更准确的过滤器。

e.g  and upper(data_type) like '%TIMESTAMP%'