我想将列名转换为日期。 例如列名称是今天,我想将其动态转换为今天的日期,如MM / DD / YYYY。
答案 0 :(得分:2)
截至目前,列名是"今天"我希望它是当前日期
您无法配置列以自动更改其名称。反映当天或其他任何事情。
但是,您可以在执行查询时使用别名更改列名。为了使事情尽可能透明,您可能想要创建一个视图。这是一个例子:
-- Some table with a column named "TODAY"
CREATE TABLE T AS (SELECT LEVEL today FROM DUAL CONNECT BY LEVEL < 5);
-- Use PL/SQL to create a view on the given table
-- with a dynamic column name
DECLARE
today varchar(10) := TO_CHAR(SYSDATE,'DD/MM/YYYY');
query varchar(200) := 'CREATE OR REPLACE VIEW V'
|| ' AS SELECT today "' || today || '"'
|| ' FROM T';
BEGIN
execute immediate query;
END;
然后,查询&#34;表&#34;使用右列名称,您只需要查询V
而不是T
:
SELECT * FROM V;
12/12/2014
1
2
3
4
如果您每天重新创建视图,例如通过从job调用上述PL / SQL代码,您将看到每天都有一个视图,其中当前日期为列名。但是,由于基础表保持不变,您仍然可以使用规范名称today
来查询它。例如,如果您需要在该表上执行连接,这一点非常重要。
话虽如此,我不确定我是否会推动这样的解决方案。使用风险自负!
答案 1 :(得分:1)
如果希望列名称标题显示为与表中定义列名称不同的内容,则只需使用该列的as "DisplayColumnName"
子句:
select user_name, today as "12/12/2014" from some_table;
但是你需要以编程方式生成SQL语句才能工作。您正在使用的编码环境将决定如何动态创建select语句。