将oracle表列名转换为MM / DD / YYYY

时间:2014-12-12 17:36:11

标签: oracle date columnname

我想将列名转换为日期。 例如列名称是今天,我想将其动态转换为今天的日期,如MM / DD / YYYY。

2 个答案:

答案 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语句。