我想查找表中有多少列是时间戳列。 我已经尝试过像下面这样的简单查询,通过对列的名称进行硬编码来使带有时间戳的列退役
SELECT time1, time2 FROM givenTable;
但是我不想对时间戳列的名称进行硬编码。 SQL中有什么方法可以告诉我表中列的名称是timestamp列?
答案 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%'