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

dgjrabp2  于 2023-04-05  发布在  Oracle
关注(0)|答案(2)|浏览(114)

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

4nkexdtk

4nkexdtk1#

截至目前,列名为“今天”,我希望它是当前日期
你不能配置一个列来自动改变它的名字。来反映当前的日期或其他什么。

  • 但是 *,你可以在做查询的时候通过使用别名来改变列名。为了让事情尽可能的透明,你可能想要创建一个视图。下面是一个例子:
-- 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;

然后,要查询具有 right 列名的“表”,您只需查询V而不是T

SELECT * FROM V;

12/12/2014
1
2
3
4

如果你每天都重新创建视图,比如说从一个作业中调用上面的PL/SQL代码,你每天都会看到一个以当前日期作为列名的视图。但是,由于底层表保持不变,你仍然可以使用规范名称today来查询它。例如,如果你需要在该表上执行连接,这一点很重要。

  • 话虽如此,我不确定我会推动这样的解决方案。使用风险自担!*
ojsjcaue

ojsjcaue2#

如果您希望列名标题显示为与表中定义的列名不同的内容,则只需为该列使用as "DisplayColumnName"子句:

select user_name, today as "12/12/2014" from some_table;

但是你需要通过编程来生成SQL语句,你所使用的编码环境将决定如何动态地创建一个select语句。

相关问题